9

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

一切都很好,直到我不得不用postForLocation 发帖

我有权访问的 Web 服务返回一个 json,其中包含有关 POST ACTION 的信息。

在 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 更改为正确的内容)我有一个完整的响应,即这有效:

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

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

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

4

2 回答 2

11

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

所以像这样:

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

这会将响应作为字符串返回。

于 2013-03-27T21:02:46.670 回答
4

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

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

出于某种原因,我不能在 MAP 中使用参数,而必须将它们内联在 URL 中。但这对我来说很好。

于 2013-03-27T21:26:44.007 回答