Как получить строковый ответ из 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. Но меня это устраивает.