【发布时间】:2017-06-28 06:07:08
【问题描述】:
我遇到这样的情况:我需要调用一个外部接口,它使用第一种方式。但是现在,我需要使用第二种方式,遗憾的是它不起作用。
第一种方式
try {
String url = "http://domain/service";
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
List nvps = new ArrayList();
nvps.add(new BasicNameValuePair("jsoncommond", jsoncommond));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
CloseableHttpResponse response = httpclient.execute(httpPost);
HttpEntity entity = response.getEntity();
String APIresult = "";
if (entity != null) {
APIresult = EntityUtils.toString(entity, "utf-8");
}
System.out.println("==="+ APIresult);
EntityUtils.consume((org.apache.http.HttpEntity) entity);
response.close();
response.close();
httpclient.close();
} catch (Exception e){
e.printStackTrace();
}
第二种方式
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(jsoncommond,headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST,entity,String.class);
System.out.println("-----"+response+"\n----=-"+response.getBody());
这样的结果,response.getBody() 为空
**-----<200 OK,{Server=[], Content-Type=[text;html;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 28 Jun 2017 05:26:22 GMT]}>
----=-null**
jsoncommond 是这样的 json 字符串:
{
"request": {
"aPPID": "aa",
"aPPKEY": "bb"
},
"data": {
"address": "x",
"city": "y",
"country": "z"
}
}
这是为什么呢?请帮帮我!
【问题讨论】:
标签: java spring resttemplate