开发者社区> 问答> 正文

Not in GZIP format报错求助?报错

现在根据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时貌似是没有问题的。

请教那位大神遇到过这种问题帮忙回答下

展开
收起
爱吃鱼的程序员 2020-06-09 15:32:27 754 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    gzip是http1.1才支持的,你可以在代码里主动表明自己是http1.0版本,这样对方就会给你返回未经压缩的数据了,也就规避了你说的这个问题。回复<aclass='referer'target='_blank'>@南湖船老大:我试试先键值是什么回复<aclass='referer'target='_blank'>@OROCHIWANG:嗯,思路就是这样的。避开gzip的问题具体的代码怎么实现?是setRequestProperty么

    2020-06-09 15:32:45
    赞同 展开评论 打赏
问答分类:
Go
问答地址:
问答排行榜
最热
最新

相关电子书

更多
File Format Benchmark- Avro, J 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载