簡體   English   中英

改造:使用 JSON 數組發送 POST 請求

[英]Retrofit: Sending POST request with JSON Array

我有JsonElement jsonElement對象,我從另一個 GET 請求收到它作為響應。 jsonElement.toString(); 看起來像 JSON 數組:

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

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

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

如果您通過請求正文發送數據,您的實現應該是這樣的:

  1. 根據字段定義模型(區分大小寫的“名稱”-> 字符串名稱等)
  2. 也像這樣設置你的api函數

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

    getFriendsLocation(yourClassObjectThatIncludesFields, new Callback .... )

如果您通過 params 發送數據,您可以使用 Gson 執行此操作。

  1. 假設您有一個包含 id 、 number 和 FriendNumber 等字段的類。定義一個函數:

     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. 當您從您的字段發送 post 請求創建對象時,請調用此函數,如下所示

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

我沒有編寫包含類定義和回調函數的完整代碼,因為它們取決於您的自定義。 我假設您需要發送身體,因此請嘗試第一種方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM