java incorrect header check_DataFormatException:java.util.zip.InflaterInputStream中的标头检查不正确(DataForma...

问 题

我在我的项目中使用javafx webview,它在一个网站上开始崩溃。

通过调试我理解,当页面接收到部分js-code服务器使用标题"content-encoding:deflate"时,忽略我的请求标题。

inflaterinputstream的inflate方法中的主要问题。

java.util.zip.zipexception:错误的标题检查

在java.util.zip.inflaterinputstream.read(inflaterinputstream.java:164)

我转载了这个简单方法中的错误:

public byte [] maketestrequest(string url)throws exception {

inputstreamresponselistener listener = new inputstreamresponselistener();

请求请求= httpclient

.newrequest(url);

request.send(listener);

响应响应= listener.get(5,timeunit.seconds);

byte [] uncompresseddata = new byte [65536];

if(response.getstatus()== 200){

try(inputstream responsecontent = listener.getinputstream()){

inputstream stream = new inflaterinputstream(responsecontent);

int len,offset = 0;

while((len = stream.read(uncompresseddata,offset,uncompresseddata.length-offset))gt; 0){

offset + = len;

}

stream.close();

} catch(例外e){

e.printstacktrace();

}

}

返回uncompresseddata;

}

此方法出错。

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/zip/inflater.java#247

此时的inflator缓冲区包含数据:

[ -52,93 ,105,115,19,-57,-70,-2,43,42,127,-54,-87,-63,-55,116,-49,-98,111,22,96,98, -57,-40,-114,23,-74,-101,-5,-63,24,-127,29,-37,-40,120,97,75,-91,-54,24, 8,-71,5,9,107,78,40,3,33,108,39,124,57,39,62,24,-127,-15,34,-2,-62,-24, 31,-35,126,-33,30,75,-45,-45,61,51,26,105,20,83,-87,20,-42,72,-74,-34,-18 ,-89,-33,125,-23,-17,59,-26,-58,-58,-89,74,-117,71,74,-13,11,-109,-77,103 ,59,-66,116,40,-47,109,87,-73,-68,125,29,-89,-25,103,103,106,-49,117,-10,122,108 ,124,113,118,126,-95,-10,-56,-78,108,-41,-13,8,-75,-10,117,44, -52,-51,-50,47,46,116,124,-7,63,-33,119,76,-98,-22,-8,-110,24,-122,109,-17 ,99,127,122,-66,116,118,-79,7,30,20,-21,-104,-102,60,-53,126,-24,88,40,-99, -103,97,15,59,-40,-17,-80,95,25,-104,63,85,-102,103,79,53,-83,83,-45,14,-112 ,-2,18,123,126,118,108,-90,-60,30,-7,47,-85,87,-85,43,-2,127,-3,-118,-65 ,-11,121,-63,95,-83,94,-59,-97,55,11,-2,29,-1,-91,-65,-38,-15,-61, - 66,-32,-69,-22,127,26,-120,-112,-1,-80,-6,79,-42,126,-97,-102,54,-11,-62 ,-76,-102,-87,-76,-114,107,-102,123,-48,-103,10,-3,-31,-25,126,-39,-33,97, -1,109,84,-81,48,90,31,51,90,-33,-79,127,95,86,111,85,127,-87,-34,-16,-53, -43,101,124,-2,-112,125,-7,-102,-65,-59,62,117,-69,-10,-11,102,10,-7,-29, -22,111,-87,47,-33,51,28,51,59,-7,93,90,118,-14,-1,-12,55,-128,-8,-6, 87,59,-60,-10,-78,-94,60,114,-48,-42,15,-57,-94,-4,79,32,-12 4,-3,-5,-100,-67,126,-29,-81,85,-105,25,73,-1,-57,8,-72,-30,111,-78, 47,47,23,-4,109,-10,112,-123,-47,20,-94,-62,-16,44,43,76,-123,-95,-96,98, -66,116,-122,29,89,120,-41,54,-115,40,81,68,-45,102,-12,-119,-109,33,-94,-18, -78,111,-127,-81,44,-121,72,-5,-61,-81,84,-81,-80,-89,12,60,-10,-22,25, -37,-93,-113,-80,51,-80,35,-2,-70,-65,86,-93,-57,72,1,108,36,125,79,125 ,85,-90,103,-89,-82,74,90,-58,56,-79,-10,-89,44,-29,87,-1,13,35,-70,2 ,-80,50,-46,-73,16,-8,-73,8,55,-20,-7,-57,78,98,-121,118,-106,-70,70, -104,6,-102,74,-125,-50,-74,82,100,-71,87,-64,-77,64,-125,-1,1,-72,-104, -67,126,84,103]

我很惊讶,但我的页面成功显示在chrome和safari,但不适用于javafx webview。

这是inflate方法中的错误还是我做错了什么?

解决方案

它没有解决javafx webview的问题,但使用 inflator 构造函数与 nowrap 选项帮助错误的标题检查"错误:

inflator inf = new inflator(true);

inputstream stream = new inflaterinputstream(responsecontent,inf);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值