一个很有档次的问题,呵呵(Not in GZIP format)

问题描述

我在用socket下载页面(http://www.amazon.cn/mn/detailApp?ref=RK&uid=478-9408365-8400056&asin=B0036DD2ZS )时,在解压gzip时出现这个问题:Exception in thread "main" java.io.IOException: Not in GZIP formatat java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:137)at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)我想可能是http header部分和html部分切分的不够好,但是我试了很多切分, 都是这个问题, 现在不知道是什么原因导致这个异常,还有就是 , 我在读socket输入流时 ,总是在一个地方停下来,过来很长(好几分钟)时间才会读完,每次出现这个现象, 那么这个gzip的解压就一定出问题,如果很快的读完socket输入流,那就解压正常,我想求教各位这是为什么??谢谢 了!!! 问题补充:pxb1988 写道

解决方案

这个问题我也刚解决,我估计你是没有注意其中的http响应中会有一个transfer-encoding:chunked。 这个是一个分段传输的标志,所以你在解析数据时需要按照chunked的规范提取对应的数据,过滤掉如数据长度之类的信息,然后再对数据进行gzip解压,这样就可以了。 不一定是你说的切分的问题。
解决方案二:
为什么不直接用java.net.URL或者Http client之类现成组件的下载?在读Socket的时候要包装一个BufferInputStream,读BuffIS 比直接读SocketInputStream快,可以解决长时间读取的问题.要想amazon启用GZIP压缩你发过去的http请求头中accept-encoding字段要包含gzip,但是amazon未必会启用GZIP压缩传输,在读收到的http请求头中看Content-Encoding字段是否为gzip,如果是那就是gzip流,否则就是普通的流.
解决方案三:
检查一下配置文件

时间: 2024-11-02 05:19:17

一个很有档次的问题,呵呵(Not in GZIP format)的相关文章

非常好玩 - 国内一个很棒的flex网站

非常好玩 - 国内一个很棒的flex网站 很欣赏这个网站,结构速度各个方面都很不错.采用flex和PHP开发的. 界面类似Adobe的风格.,黑色~ .用了DeepLink和Php相结合技术,对搜索引擎优化的很好. 网站内部的统计也做的很仔细.整个网站好像还做了缓存. 网址:http://veryhw.com/ 索引:http://veryhw.com/video.html 视频很清晰 还专门做了新手帮助,对于一个人来做这一整套网站程序,站长你用心了 统计信息做的很详细 :-)  还发现了  一

java-新手问一个很奇怪的问题

问题描述 新手问一个很奇怪的问题 class Demo { int num = 1; int add = 2; Demo() { num = 5; add = 6; } void show() { System.out.println("Fu num="+num+" Fu add="+add); } } class DemoA extends Demo { DemoA() { this.num = 3; this.add = 4; } void show() { S

字符串-一个很基础的返回值问题

问题描述 一个很基础的返回值问题 想要打印字符串数组,去掉中间的空格和Tab,并且删除全为空的行,哪里有错?谢谢. #include #define MAXLINE 1000 int getline(char line[], int maxline); int copy(char to[],char from[]); int main(){ int len; int max; char line[MAXLINE]; max=0; while ((len=getline(line,MAXLINE)

js-最近遇到一个很醉人的问题 我有两个项目 当我单独打开a项目的时候 ..

问题描述 最近遇到一个很醉人的问题 我有两个项目 当我单独打开a项目的时候 .. 最近遇到一个很醉人的问题 我有一个项目 分为两次打开 当我单独打开a项目的时候 里面的有个功能是缺失的关掉后 打开b项目那个功能又恢复了 a和b是相同的项目 他们的代码是一样的 更有意思的是当我两个项目都运行的时候 a和b的功能又全都恢复了 我关掉B 再次运行A 功能又缺失了 解决方案 我猜测应该去对比一下配置文件跟机器的运行环境的log文件

c语言 单片机-keil4开发中遇到的一个很奇怪的问题。

问题描述 keil4开发中遇到的一个很奇怪的问题. void main(){ // uchar test_i; const uchar timp_button=0xfF; //this value is that the button havn't sticked uchar n_delay; //delay unsigned char j=0; unsigned char i; intend_initiation(); //调用时间设定程序 while(1){ if((hour==alarm_

android,一个很简单的demo,一运行就出错,谁能帮我看看怎么回事。

问题描述 android,一个很简单的demo,一运行就出错,谁能帮我看看怎么回事. eclipse上也没有错误提示,怎么运行不了.安装好就提示停止运行. 文件 解决方案 看logcat的日志,或者进入调试模式运行,一步步调 解决方案二: 亲,绑定布局空间是要通过布局管理者来获取的,不然就是空指针错误.具体如下 解决方案三: 用调试模式调试吧,很方便的. 解决方案四: 要看log日志的啊.看日志才知道哪里出错了, 解决方案五: fragment控件初始化的问题吧 解决方案六: fragment控

绘图-MATLAB做一个很简单的图

问题描述 MATLAB做一个很简单的图 用matlab把下面这个表格实现,横坐标表示字种数,纵坐标表示百分比,具体怎么实现,多谢了 解决方案 可以呀,把plot改为bar 解决方案二: x=[500 1000 1500 2000 2500 3000 3500 4000];y=[78.53 91.92 96.48 98.39 99.24 99.63 99.82 99.92];plot(xy) 解决方案三: 想请你半个忙,如果可以加我QQ:815359755 解决方案四: x=[500 1000 1

ORACLE监听程序打开后自动关闭,一个很常见却很棘手的问题

问题描述 ORACLE监听程序打开后自动关闭,一个很常见却很棘手的问题 这个是打开监听时候报的错误. 命令行启动报错 现在主机名 listener.ora tnsnames.ora 问题出在哪里了? 我自己也在找办法解决,c币有限,只是希望遇到过类似问题的朋友分享下自己的经验.问题解决之后希望可以给大家带来便利

boolean-问一个很白的问题:关于if中Boolean判断的

问题描述 问一个很白的问题:关于if中Boolean判断的 Boolean flag;if(flag) i = 1;} else { i = 2;}我的flag的值是从别的类中传过来的,那么,当我flag=true时我的i=1还是i = 2:当我flag=false时i=1还是i= 2? 解决方案 一般 false 由0代替,true 是非0,有用1的,也有用-1的.所以flag=true时,是i=1: flag=false时,是i=2 解决方案二: C++中异常处理与if判断的问题判断一个整数