如何从RestTemplate postForLocation获取STRING响应?

Ale*_*dre 9 java rest spring

我正在使用Spring Framework中的RestTemplate在Java中创建REST客户端.

一切都很好,直到我必须使用postForLocation做一个帖子.

我有权访问的webservice返回一个json,其中包含有关POST ACTION的信息.

在PHP中它很好,但我真的不明白如何使用RestTemplate在Java中做.

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;
    }
Run Code Online (Sandbox Code Playgroud)

这返回NULL.

使用相同的代码,但使用getForObject(当然,将URL更改为正确的)我有一个完整的响应.

那么......如何从postForLocation获得RESPONSE ?

Obs:对不起,如果这个问题很愚蠢.我是Java的初学者

Pie*_*gen 8

postForLocation方法返回Location标头的值.您应该使用postForObject,它返回服务器的响应.

像这样:

String result = restTemplate.postForObject(API_URL + "account/authenticate/?email={email}&token={token}", String.class, args);
Run Code Online (Sandbox Code Playgroud)

这将以字符串形式返回响应.


Ale*_*dre 4

感谢答案之一,我已经弄清楚如何使用 postForObject 从 Spring 的 POST 中获取响应

String result = restTemplate.postForObject(API_URL + "account/authenticate/?email="+ AUTH_USER +"&token="+ AUTH_PASS, null, String.class);
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我无法在 MAP 中使用参数,并且必须将它们内联到 URL 中。但这对我来说很好。