2013-03-27 79 views
8

我使用Spring框架的RestTemplate創建了Java中的REST客戶端。如何從RestTemplate postForLocation獲取STRING響應?

一切都很好,直到我必須做一個職位postForLocation

我有權訪問的web服務返回一個帶有關於POST操作信息的json。

在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獲得RESPONSE?

Obs .:對不起,如果這個問題是愚蠢的。我是Java的初學者

+1

你應該發佈「答案」作爲答案。 – Jaanus 2013-03-27 21:25:52

+0

謝謝......第一次我需要這樣做:] – Alexandre 2013-03-27 21:27:24

回答

1

感謝答案我已經想通了如何使用postForObject

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

出於某種原因,我不能與地圖中使用的參數,並必須把他們得到和春天有個POST響應的一個在URL中內聯。但這對我來說很好。

+0

我得到一個字符串數組作爲迴應,我如何得到這個亞歷克斯? – SAR 2013-09-23 05:37:27

+0

嗨@Antony,對於遲到的回覆抱歉。其實我也收到了一個字符串數組作爲響應。在這個問題上,我想你可以弄清楚我是如何製作的: http://stackoverflow.com/questions/16656938/parsing-json-string-as-simple-as-possible-with-gson – Alexandre 2013-10-10 12:26:14

+0

我已經這樣做了,我對輸出感到困惑,它是PHP序列化的字符串,我必須使用PHP序列化器轉換爲Java。謝謝 – SAR 2013-10-11 05:33:17

7

postForLocation方法返回位置標題的值。你應該使用postForObject,它返回服務器的響應。

所以這樣的:

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

這將返回響應作爲一個字符串。

+0

感謝您的提示。即使如此,你的代碼看起來是錯誤的(這裏有錯誤信息),但我現在已經想通了,並用答案編輯了我的問題。謝謝! – Alexandre 2013-03-27 21:20:00

+0

不客氣! (對不起,錯誤) – 2013-03-27 21:21:48