我正在使用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的初学者
答案 0 :(得分:8)
postForLocation
方法返回Location标头的值。您应该将postForObject
与String
类一起使用,该类返回服务器的响应。
所以这样:
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中。但那对我没问题。