现在根据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么