在Android中如何在改造请求中传递JSON对象和检索JSON对象?
我需要使用在Android中如何在改造请求中传递JSON对象和检索JSON对象?,android,json,android-adapter,retrofit,Android,Json,Android Adapter,Retrofit,我需要使用改装在Post请求中传递Json。我的Json如下所示: { "q": { "reg": "IND", "or": [ { "duration": "12" } ] }, "sort": "recent" } 我为上面的Json创建了pojo,使用类似于以下内容:RoomListing.java 现在我需
改装在Post
请求中传递Json
。我的Json
如下所示:
{
"q": {
"reg": "IND",
"or": [
{
"duration": "12"
}
]
},
"sort": "recent"
}
我为上面的Json
创建了pojo
,使用类似于以下内容:RoomListing.java
现在我需要发出一个post
请求。因此,我创建了一个API
public interface RoomListingAPI {
@GET("/api/fetch")
void getRoomListing(@Header("x-parse-session-token") String
token, @Body RoomListing list);
}
创建了一个RestAdapter
类
return new RestAdapter.Builder()
.setEndpoint(BASE_URL)
.build();
RoomListingAPI apiservice = restadapter.providesRestAdapter().create(RoomListingAPI.class);
现在我有点困惑,是否将Json
(查看RoomListing.java)作为post
请求发送,并接收Json
作为响应
任何帮助都是值得的 首先,您需要将注释从@GET
更改为@POST
,以执行POST
请求。接下来,假设您使用的是Reformation 1.9.x,您需要执行以下两项操作之一来获得结果JSON响应,具体取决于您想要的是同步响应还是异步响应:
- 同步(在当前线程上)-将
void
更改为响应的pojo类型,类似于创建请求对象的方式(例如ResponseType yourMethod(@Body RequestType object);
- 异步(在另一个线程上,使用回调)-将
回调添加到方法末尾,然后在请求返回成功或不成功时调用该回调(例如void yourMethod(@Body RequestObject object,callback callback);
我希望你能工作,但它应该是这样的。为什么不把你的json作为字符串发送呢?你可以使用import org.json.JSONArray和import org.json.JSONObject来创建json结构。我在改型中没有找到直接发送json的例子。我把json作为字符串发送改型/发布给我几分钟,然后演示谢谢你。谢谢你的回答,但我的请求中没有YOURFIELDNAME
。我只是在Body
中以原始格式传递JSON
,我想在JsonObject中得到响应,因为它是动态的JSON。改型不是最好的选择-看看使用类似于Volley的东西,它会给你JSONObjects-改型是设计好的为了类型安全,涵盖“普通”案例web请求。我们不能将JSON对象作为post请求发送并接收JSON对象吗?
public interface RoomListingAPI {
@POST("/api/fetch")
void getRoomListing(@Header("x-parse-session-token") String
token, @Field("YOURFIELDNAME") String json);
}
//This method generates your json
private String yourJSON(){
JSONObject jsonRoot = new JSONObject();
JSONObject jsonObject1 = new JSONObject();
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject2 = new JSONObject();
try{
jsonArray.put(jsonObject2);
jsonObject2.put("duration", "12");
jsonObject1.put("reg", "IND");
jsonObject1.put("or", jsonArray);
jsonRoot.put("q", jsonObject1);
jsonRoot.put("sort", "recent");
}catch (JSONException e){
e.printStackTrace();
}
return jsonRoot.toString();
}
RoomListingAPI apiservice = restadapter.providesRestAdapter().create(RoomListingAPI.class);
apiservice.getRoomListing("your_header_token",yourJSON())...