由于请求返回的结果大小未知,所以建议使用getResponseBodyAsStream方法获取请求结果,该方法返回一个InputStream,再将InputStream转为String返回。转换过程中发现获取的字符串结果是乱码的,又尝试读取InputStream是设置编码为"UTF-8",还是不管用,后来使用GZIPInputStream包装一下就行了。
// 获取返回字符串 避免返回结果大小未知 使用getResponseBodyAsStream()
InputStream stream = method.getResponseBodyAsStream();
// 解决乱码用GZIPInputStream包装
GZIPInputStream gis = new GZIPInputStream(stream);
BufferedReader br = new BufferedReader(new InputStreamReader(gis,"UTF-8"));
String str = "";
while ((str = br.readLine()) != null) {
sb.append(str);
}
return sb.toString();