Как получить строковый ответ из postForLocation RestTemplate?
Я создаю клиент REST на Java с RestTemplate из Spring Framework.
все в порядке, пока я не должен сделать сообщение с postForLocation.
веб-сервис, к которому у меня есть доступ, возвращает json с информацией о действии POST.
в PHP это нормально, но я действительно не понимаю, как это сделать в Java с RestTemplate.
public String doLogin()
{
Map<String, String> args = new HashMap<String, String>();
args.put("email", AUTH_USER);
args.put("token", AUTH_PASS);
String result = restTemplate.postForLocation(API_URL + "account/authenticate/?email={email}&token={token}", String.class, args);
return result;
}
Это возвращает NULL.
с тем же кодом, но с использованием getForObject (и, конечно, изменение URL-адреса на что-то правильное) у меня есть полный ответ.
Так... как получить ответ от postForLocation?
Obs.: Извините, если этот вопрос тупой. Я новичок в Java
2 ответов
на postForLocation
метод возвращает значение заголовка Location. Вы должны использовать postForObject
, который возвращает ответ сервера.
таким образом:
String result = restTemplate.postForObject(API_URL + "account/authenticate/?email={email}&token={token}", String.class, args);
это вернет ответ в виде строки.
благодаря одному из ответов я понял, как получить ответ от сообщения с Spring, используя postForObject
String result = restTemplate.postForObject(API_URL + "account/authenticate/?email="+ AUTH_USER +"&token="+ AUTH_PASS, null, String.class);
по какой-то причине я не могу использовать аргументы с MAP и должен поместить их в URL. Но меня это устраивает.