我在使用 Spring restTemplate 时遇到问题。
现在,我正在发送一个 PUT 请求以获取一个宁静的服务,并且该宁静的服务将重要信息发回给我作为响应。
问题是restTemplate.put是一个void方法而不是一个字符串,所以我看不到那个响应。
按照一些答案,我改变了我的方法,现在我正在使用restTemplate.exchange,这是我的方法:
public String confirmAppointment(String clientMail, String appId)
{
String myJsonString = doLogin();
Response r = new Gson().fromJson(myJsonString, Response.class);
// MultiValueMap<String, String> map;
// map = new LinkedMultiValueMap<String, String>();
// JSONObject json;
// json = new JSONObject();
// json.put("status","1");
// map.add("data",json.toString());
String url = getApiUrl() + "company/" + getCompanyId() + "/appointment/" + appId + "?session_token=" + r.data.session_token;
String jsonp = "{\"data\":[{\"status\":\"1\"}]}";
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.add("Accept", "*/*");
HttpEntity<String> requestEntity = new HttpEntity<String>(jsonp, headers);
ResponseEntity<String> responseEntity =
rest.exchange(url, HttpMethod.PUT, requestEntity, String.class);
return responseEntity.getBody().toString();
}
使用上述方法,我收到400 Bad Request
我知道我的参数、url 等都很好,因为我可以像这样执行restTemplate.put请求:
try {
restTemplate.put(getApiUrl() + "company/" + getCompanyId() + "/appointment/" + appId + "?session_token=" + r.data.session_token, map);
} catch(RestClientException j)
{
return j.toString();
}
问题(就像我之前说的)是上面的 try/catch 没有返回任何响应,但它给了我200响应。
所以现在我问,有什么问题?