改造:使用 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);
如果您通过请求正文发送数据,您的实现应该是这样的:
- 根据字段定义模型(区分大小写 "Name" -> 字符串名称等)
设置你的 api 功能也一样
@POST("/api/geo/getLoc")
public void getFriendsLocation(@Body YourClass classObject, Callback<JsonElement> response);
直接在 post 请求中使用您创建的 class 对象
getFriendsLocation(yourClassObjectThatIncludesFields, new Callback .... )
如果您通过参数发送数据,您可以使用 Gson 执行此操作。
假设您有一个 class,其中包含 id 、 number 等字段和 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);
}
设置你的 api 功能也一样
@POST("/api/geo/getLoc")
public void getFriendsLocation(@QueryMap Map<String, Object>, Callback<JsonElement> response);
当您发送 post 请求时,从您的字段中创建对象调用此函数,如下所示
getFriendsLocation(getMapFromObject(yourClassObjectThatIncludesFields), new Callback .... )
我没有编写包含 class 定义和回调函数的完整代码,因为它们取决于您的自定义。我假设您需要发送正文,所以请尝试第一种方式。
我有 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);
如果您通过请求正文发送数据,您的实现应该是这样的:
- 根据字段定义模型(区分大小写 "Name" -> 字符串名称等)
设置你的 api 功能也一样
@POST("/api/geo/getLoc") public void getFriendsLocation(@Body YourClass classObject, Callback<JsonElement> response);
直接在 post 请求中使用您创建的 class 对象
getFriendsLocation(yourClassObjectThatIncludesFields, new Callback .... )
如果您通过参数发送数据,您可以使用 Gson 执行此操作。
假设您有一个 class,其中包含 id 、 number 等字段和 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); }
设置你的 api 功能也一样
@POST("/api/geo/getLoc") public void getFriendsLocation(@QueryMap Map<String, Object>, Callback<JsonElement> response);
当您发送 post 请求时,从您的字段中创建对象调用此函数,如下所示
getFriendsLocation(getMapFromObject(yourClassObjectThatIncludesFields), new Callback .... )
我没有编写包含 class 定义和回调函数的完整代码,因为它们取决于您的自定义。我假设您需要发送正文,所以请尝试第一种方式。