【笔记——Java】关于HttpUrlConnection获取数据中文乱码问题

前段时间写了一个从顺丰获取快递信息的程序,通过HttpUrlConnection 获取的数据乱码,明明拦截的数据写着utf-8还是乱码,后来终于发现原因是没有对数据进行解压,上拦截图:

总算是找到问题所在了,数据传输似乎会先压缩,估计是为了传输效率吧。

于是乎先进行解压吧:

 1 /**
 2      * 这是一个静态方法,数据工具方法,传入输入流in,以及数据长度,就能获取解压后的结果byte数组
 3      * @param in 一个输入流,可以通过HttpUrlConnection对象的getInputStream()获取
 4      * @param length 数据的长度,主要是用来创建一个刚好的byte数组来存放得到的数据,可以HttpUrlConnection对象的getHeaderField("Content-Length")获得
 5      */
 6     
 7     public static byte[] getInt(InputStream in,int length) {
 8         byte[] by = new byte[length];
 9         
10         try {
11             GZIPInputStream giz = new GZIPInputStream(in);
12             giz.read(by, 0, length);
13         } catch (IOException e) {
14             // TODO Auto-generated catch block
15             e.printStackTrace();
16         }
17         return by;
18     }

得到解压后的byte[]数组数据后,直接通过

String result = new String(by,"utf-8");

就能得到结果

其中:

  by:得到的解压后的数组

  utf-8:这个是可以从拦截那里看到的编码类型

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。