我收到的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);
答案 0 :(得分:2)
如果您要通过请求正文发送数据,那么您的实现应该是这样的:
设置你的api功能
@POST("/api/geo/getLoc")
public void getFriendsLocation(@Body YourClass classObject, Callback<JsonElement> response);
直接在帖子请求中使用您创建的类对象
getFriendsLocation(yourClassObjectThatIncludesFields, new Callback .... )
如果您通过params发送数据您可以使用Gson执行此操作。
假设您有一个类,其中包含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);
当您从字段发送帖子请求时,创建对象会调用此函数,如下所示
getFriendsLocation(getMapFromObject(yourClassObjectThatIncludesFields), new Callback .... )
我没有编写包含类定义和回调函数的整个代码,因为它们取决于您的自定义。我假设你需要发送身体,所以尝试第一种方式。