现在根据URLConnection访问时遇到了这样一个问题,运行程序时会偶尔报Not in GZIP format,这个问题不是经常出现,是偶尔会出现,而且没有规律。 代码如下: public static Serializable sendRequest(String servlet_url, Serializable obj) throws Exception { URL url = new URL(servlet_url); HttpURLConnection con = (HttpURLConnection)url.openConnection(); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); con.setRequestProperty("Content-Type", "application/octet-stream"); writeZIPObject(con.getOutputStream(), obj); Serializable reply = null; reply = (Serializable)readZIPObject(con.getInputStream()); con.disconnect(); Serializable result = reply.getData(); if (result instanceof Exception) { throw ((Exception)result); } ... } public static Serializable readZIPObject(InputStream in) throws IOException, ClassNotFoundException { BufferedInputStream buffer = new BufferedInputStream(in); GZIPInputStream gi = new GZIPInputStream(buffer); ObjectInputStream oi = new ObjectInputStream(gi); Serializable obj = (Serializable) oi.readObject(); oi.close(); gi.close(); buffer.close(); in.close(); return obj; } public static void writeZIPObject(OutputStream out, Serializable obj) throws IOException { BufferedOutputStream buffer = new BufferedOutputStream(out); GZIPOutputStream go = new GZIPOutputStream(buffer); ObjectOutputStream oo = new ObjectOutputStream(go); oo.close(); go.close(); buffer.close(); out.close(); } 现在在程序中报这样一个错: java.io.IOException: Not in GZIP format at java.util.zip.GZIPInputStream.readHeader(Unknown Source) at java.util.zip.GZIPInputStream.<init>(Unknown Source) at java.util.zip.GZIPInputStream.<init>(Unknown Source) ... 报错代码是GZIPInputStream gi = new GZIPInputStream(buffer); 我已经查了网上很多种解决方法可尝试后发现都没有解决,值得注意的是现在程序中传给servlet_url的是一个HTTPS的URL,以前为HTTP时貌似是没有问题的。 请教那位大神遇到过这种问题帮忙回答下
gzip是http1.1才支持的,你可以在代码里主动表明自己是http1.0版本,这样对方就会给你返回未经压缩的数据了,也就规避了你说的这个问题。回复<aclass='referer'target='_blank'>@南湖船老大:我试试先键值是什么回复<aclass='referer'target='_blank'>@OROCHIWANG:嗯,思路就是这样的。避开gzip的问题具体的代码怎么实现?是setRequestProperty么
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。