如何在Android中的改进请求中传递JSON对象并检索JSON对象?

时间:2015-09-16 23:08:53

标签: android json android-adapter retrofit

我需要使用JsonPost请求中传递Retrofit。我的Json看起来像这样:

{
  "q": {
         "reg": "IND",
         "or": [
                {
                 "duration": "12"
                }
              ]
       },
 "sort": "recent"
}

我使用jsonschema2pojo创建了pojo以上Json,与此类似:RoomListing.java class

现在我需要发出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作为回应?

任何帮助都会很明显。

2 个答案:

答案 0 :(得分:0)

首先,您需要将注释从@GET更改为@POST以执行POST请求。接下来,假设您正在使用Retrofit 1.9.x,您需要执行以下两项操作之一来获取生成的JSON响应,具体取决于您是否需要同步或异步响应:

  • 同步(在当前主题上) - 将void更改为响应的类型,类似于您创建请求对象的方式(例如ResponseType yourMethod(@Body RequestType object);
  • 异步(在不同的线程上,带有回调) - 在方法的末尾添加Callback<ResponseType>,然后在成功或不成功返回请求时调用(例如{{1 }}

答案 1 :(得分:0)

#include <stdio.h>

void shell_sort (int *a, int n) {
    int h, i, j, t;
    for (h = n; h /= 2;) {
        for (i = h; i < n; i++) {
            t = a[i];
            for (j = i; j >= h && t < a[j - h]; j -= h) {
                a[j] = a[j - h];
            }
            a[j] = t;
        }
    }
}

int main (int ac, char **av) {
    int a[] = {4, 65, 2, -31, 0, 99, 2, 83, 782, 1};
    int n = sizeof a / sizeof a[0];
    int i;
    for (i = 0; i < n; i++)
        printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
    shell_sort(a, n);
    for (i = 0; i < n; i++)
        printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
    return 0;
}

我希望你工作,但它应该是这样的。