[英]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);
如果您通過請求正文發送數據,您的實現應該是這樣的:
也像這樣設置你的api函數
@POST("/api/geo/getLoc") public void getFriendsLocation(@Body YourClass classObject, Callback<JsonElement> response);
在發布請求時直接使用您創建的類對象
getFriendsLocation(yourClassObjectThatIncludesFields, new Callback .... )
如果您通過 params 發送數據,您可以使用 Gson 執行此操作。
假設您有一個包含 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); }
也像這樣設置你的api函數
@POST("/api/geo/getLoc") public void getFriendsLocation(@QueryMap Map<String, Object>, Callback<JsonElement> response);
當您從您的字段發送 post 請求創建對象時,請調用此函數,如下所示
getFriendsLocation(getMapFromObject(yourClassObjectThatIncludesFields), new Callback .... )
我沒有編寫包含類定義和回調函數的完整代碼,因為它們取決於您的自定義。 我假設您需要發送身體,因此請嘗試第一種方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.