前提服务器开启gzip支持
public static void main(String[] args) {
// 要传的数据start
Map<String,Object> mapData=new HashMap<String, Object>();
mapData.put("token", "00000000"+DemoConsts.UNION_SERVICE_CODE);
//mapData.put("openid",97777759L);
//mapData.put("groupCode","241dfbad9acb86b0aba9e7b41fd04ba4");
mapData.put("openid",86574232L);
mapData.put("groupCode","8638d7715c690c2313067233960ba4c5");
mapData.put("data", data);
String datahead=JacksonUtils.mapToJsonStr(mapData);
//要传的数据end ,头部信息定义start
headers.add("Accept", "text/plain;charset=ISO-8859-1"); //这里不能如果(text/plain或text/html)是其他的得到的数据可能不是gzip压缩或者会gzip解码失败
headers.add("Accept-Encoding", "gzip");
headers.add("Content-Encoding", "UTF-8");
HttpEntity<String> formEntity = new HttpEntity<String>(datahead, headers);//把数据和头部信息封装
//头部信息定义end
try {
// String obj = restTemplate.postForObject("http://test.scholarmate.com/scmopendata",formEntity,String.class);
ResponseEntity<String> response = restTemplate.exchange("http://test.scholarmate.com/scmopendata", HttpMethod.POST, formEntity, String.class);
//response.getBody()取到获取的gzip编码过的字符串然后解码
InputStream in_withcode = new ByteArrayInputStream(response.getBody().getBytes("ISO-8859-1"));
GZIPInputStream gunzip = new GZIPInputStream(in_withcode);ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[256];
int n;
while ((n = gunzip.read(buffer))>= 0) {
out.write(buffer, 0, n);
}
System.out.println(out.toString());
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}