用java请求一个天气接口,发现乱码。
用chrome访问乱码,360极速正常显示。
后来发现返回的gzip格式的
Content-Encoding:gzip
用java访问时妥妥的乱码就不用考虑是否解码问题
不需要第三方jar包,导入一个工具类就可以了
import java.util.zip.GZIPInputStream;
HttpClient httpClient = new DefaultHttpClient();
String url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101070101"; // 天气接口
HttpGet httpGet = new HttpGet(url);
HttpResponse response = httpClient.execute(httpGet);
try {
HttpEntity responsetEntity = response.getEntity();
InputStream inputStream = responsetEntity.getContent();
InputStream stream = new GZIPInputStream(inputStream); // 就加个这行就ok了
if(stream != null){
String data = IOUtils.toString(stream, "utf-8"); // 返回值
}
catch(Exception e){
}
读取本地gz
String fileName = "C:\\Users\\Administrator\\Desktop\\doc\\test.txt.gz";
InputStream is = new GZIPInputStream(new FileInputStream(fileName));
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);