如何从RestTemplate postForLocation获取STRING响应?

时间:2013-03-27 20:58:29

标签: java spring rest

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

一切都很好,直到我必须使用 postForLocation 发帖。

我有权访问的网络服务返回一个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;
    }

返回NULL。

使用相同的代码,但使用 getForObject (当然,将URL更改为正确的)我有完整的回复,即这有效:

String result = restTemplate.getForObject(url, String.class);

那么......如何从 postForLocation 获得响应?

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

2 个答案:

答案 0 :(得分:8)

postForLocation方法返回Location标头的值。您应该将postForObjectString类一起使用,该类返回服务器的响应。

所以这样:

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

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

答案 1 :(得分:3)

感谢其中一个答案我已经弄清楚如何通过使用postForObject获取来自POST的POST的响应

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

由于某种原因,我不能在MAP中使用参数,并且必须将它们内联到URL中。但那对我没问题。