关于使用RestTemplate调用,返回gizp压缩文件,处理该压缩文件方式
使用原生方式
ResponseEntity<byte[]> entity;
//restTemplate不支持对gzip压缩。可以使用apache httpclient作为rest客户端,支持gzip压缩 需要引入依赖!!
RestTemplate rt = new RestTemplate();
//使用java原生类
entity = rt.getForEntity("http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100", byte[].class);
GZIPInputStream fi = new GZIPInputStream(new ByteArrayInputStream(entity.getBody()))
;
BufferedReader reader = new BufferedReader(new InputStreamReader(fi));
StringWriter writer = new StringWriter();
String line;
while((line = reader.readLine()) != null) {
writer.write(line);
}
System.out.println(writer.toString());
该方法使用原生类
Apache Commons IO中的IOUtils工具库
ResponseEntity<byte[]> entity;
//restTemplate不支持对gzip压缩。可以使用apache httpclient作为rest客户端,支持gzip压缩 需要引入依赖!!
RestTemplate rt = new RestTemplate();
entity = rt.getForEntity("http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100", byte[].class);
GZIPInputStream fi = new GZIPInputStream(new ByteArrayInputStream(entity.getBody()));
StringWriter writer = new StringWriter();
IOUtils.copy(fi, writer, "utf-8");
System.out.println(writer.toString());
其中copy方法是封装了原生类的使用,