2015-09-25 364 views
1

我有JsonElement jsonElement對象,至此我從另一個GET請求收到響應。 jsonElement.toString(); 看起來像JSON陣列:Retrofit:使用JSON數組發送POST請求

[{"Id":493,"Number":"380936831127","FriendNumber":"380682140976"},{"Id":494,"Number":"380936831127","FriendNumber":"380638254108"}]

我需要通過使用改造的另一個POST請求發送此字符串。如何通過POST請求發送jsonElement或String對象? 如何看待我的方法的聲明? 例如:

@POST("/api/geo/getLoc") 
    public void getFriendsLocation(/* something */, Callback<JsonElement> response); 
+0

你使用的是彈簧mvc嗎?有註解@RequestBody在春天做這件事mvc –

+0

@ neustart47:你能找到解決辦法嗎?我面臨同樣的問題。不知道我應該如何傳遞json數組。任何指針都會有幫助!謝謝! – Neha

+0

檢查我的答案與您的類似問題..http://stackoverflow.com/questions/32775756/how-to-send-json-data-as-body-using-retrofit-android/36293022#36293022 – tsiro

回答

2

如果是在請求體發送數據的實現應該是這樣的:

  1. 根據字段定義模型(區分大小寫的「名稱」 - >字符串名稱等)
  2. 直接在設置你的API函數也是這樣的

    @POST("/api/geo/getLoc") 
    public void getFriendsLocation(@Body YourClass classObject, Callback<JsonElement> response); 
    
  3. 使用在POST請求創建的類對象

    getFriendsLocation(yourClassObjectThatIncludesFields, new Callback ....) 
    

如果在PARAMS您發送的數據,您可以做到這一點與GSON。

  1. 比方說你有一個有這樣的ID,數字域FriendNumber.Define一個函數的類:

    public static Map<String, Object> getMapFromObject(Object o) { 
        Gson gson = new Gson(); 
        Type stringObjectMap = new TypeToken<Map<String, Object>>() { 
        }.getType(); 
        return gson.fromJson(gson.toJson(o), stringObjectMap); 
    } 
    
  2. 設置你的API函數也是這樣的

    @POST("/api/geo/getLoc") 
    public void getFriendsLocation(@QueryMap Map<String, Object>,  Callback<JsonElement> response); 
    
  3. 當你從你的字段發送發佈請求創建對象時,請調用此函數,如下所示:

    getFriendsLocation(getMapFromObject(yourClassObjectThatIncludesFields), new Callback ....) 
    

我沒有寫完整的代碼,其中包括類定義和回調函數,因爲它們取決於您的自定義。我假設你需要發送身體,所以嘗試第一種方式。

+0

Thak you for你的答案。在創建模型類的對象並將其交給getMapFromObject函數後,我創建了一個模型類。作爲這個函數的工作結果,我接收到正確的Map 對象。它看起來像:[0]:「FriendNumber」 - >「380935275259」[1]:「Number」 - >「380936831127」[2]:「Id」 - >「516.0」。我在調試模式下看到了這一點。 但由於要求我收到:500內部服務器錯誤。 服務器工作肯定是正確的,所以在我的代碼中的問題。 什麼是錯的? – neustart47

+0

你在服務器端手動解析字符串嗎?你是否期待在請求主體或參數中的那些字段?如果您可以使用郵遞員等軟件共享示例工作崗位請求,我可以提供更多幫助。 – rcmalli

+0

我不知道服務器端是如何工作的,所有時間我都用JSON數組與它進行通信。這是這個郵差的例子: http://snag.gy/JYwTu.jpg – neustart47