У меня возникла проблема с использованием Spring restTemplate.Получить ответ STRING от restTemplate.put
На данный момент я отправляю запрос PUT для обслуживания, и эта служба обслуживания возвращает мне важную информацию в ответ.
Вопрос заключается в том, что restTemplate.put является методом недействительного и не строки поэтому я не могу видеть, что ответ.
После некоторых ответов я изменить мой метод, и теперь я использую 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 не возвращает никакого ответа, но дает мне ответ .
Итак, теперь я спрашиваю, что может быть неправильным?
Используйте 'методы execute': http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/client/RestTemplate.html –
@Alexandre: Обычно HTTP PUT используется для операций, которые пользователь знает. Например, чтобы обновить что-то, мы можем использовать HTTP PUT, там он не предназначен для возврата тела ответа. Может быть кодом состояния или сообщением о состоянии, которое вы можете отправить. Для этого вы можете использовать заголовки, чтобы сделать это. Если вы ожидаете тело ответа, это означает, что вы должны отклоняться от HTTP PUT до HTTP POST. Там вы сможете прочитать ответ надлежащим образом. – MCF
@MCF, к сожалению, для обслуживания, которое я получаю, требуется PUT для обновления информации об объекте и возврата информации об обновлении. Если я отправлю запрос POST, обратная ошибка возврата службы. – Alexandre