【问题标题】:android retrofit embedded query parametersandroid改造嵌入式查询参数
【发布时间】:2017-05-27 06:33:04
【问题描述】:

Android 如何使用 Retrofit 传递嵌入式查询参数...这是我的 GET METHOD Url:

localhost:5000/at_invitations?embedded={"invitee":1}

我的问题是如何使用 Retrofit 将嵌入的 value{"invitee":1} 作为查询参数传递..

这是我的服务调用声明代码:

@GET("at_invitations")
Call<JsonElement> invitationLists(
        @Header("Authorization") String token,
        @Query("embedded") String embedded

);

这是我的服务调用代码:

String token = App.getInstance().getToken();
    AppearancesService service = App.getInstance().getRESTClient().create(AppearancesService.class);
    Call<JsonElement> call = service.invitationLists(token, "{invitee:1}");

    call.enqueue(new Callback<JsonElement>() {
        @Override
        public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
            if (response.code() == 200) {
                Log.v(TAG,"Success"+ response.body(););
                }
            }
        }

        @Override
        public void onFailure(Call<JsonElement> call, Throwable t) {
            System.out.println("Failed");
        }
    });

这是错误行:(如何声明这个值("{"invitee":1}"))

Call<JsonElement> call = service.invitationLists(token, "{"invitee":1}");

请帮帮我..谢谢..

【问题讨论】:

    标签: java android rest retrofit retrofit2


    【解决方案1】:

    试试这个

    JSONObject jsonObject=new JSONObject();
            try {
                jsonObject.put("invite",1);
                String a=jsonObject.toString();
            } catch (JSONException e) {
                e.printStackTrace();
            }
    

    这里的字符串“a”将具有您想要的格式 你的电话应该是这样的

    @GET("at_invitations?")
    

    【讨论】:

      【解决方案2】:

      你好,如果有帮助,试试这个

      您的服务接口

      @Headers("Content-Type: application/json")
      @POST("index.php")
      Call<Model>getUserDetails(@QueryMap Map<String,JSONObject> stringTaskMap);
      

      获取详细信息的方法

       public void getDetails(Map<String, JSONObject> task) {
              ServiceInterfaceApi interfaceApi = ServiceClass.getApiService();
              Call<Model> call = interfaceApi.getUserDetails(task);
              Log.v("@@@WWE", "Retrofit Request Method =  " + call.request().method());
              Log.v("@@@WWE", "Retrofit Request Body =  " + call.request().body());
              Log.v("@@@WWE", "Retrofit Request Url = " + call.request().url());
              Log.v("@@@WWE", "Retrofit Request executed = " + call.isExecuted());
              Log.v("@@@WWE", "Retrofit Request Headers= " + call.request().headers());
              call.enqueue(new Callback<Model>() {
                  @Override
                  public void onResponse(Call<Model> call, Response<Model> response) {
                      Log.v("@@@", "Response");
                      if (response.isSuccessful()) {
                          Log.v("@@@", "Sucess");
                      }
                  }
      
                  @Override
                  public void onFailure(Call<Model> call, Throwable t) {
                      Log.v("@@@WWE", "Failure " + t.getMessage());
                  }
              });
          }
      

      在需要的地方调用方法

      JSONObject taskM = new JSONObject();
              try {
                  taskM.put("invitee", "1");
              } catch (JSONException e) {
                  e.printStackTrace();
              }
              Map<String, JSONObject> taskMap = new HashMap<>();
              taskMap.put("embedded", taskM);
              getDetails(taskMap);
      

      【讨论】:

        猜你喜欢
        • 2019-05-15
        • 2016-08-12
        • 2020-08-07
        • 1970-01-01
        • 2018-02-11
        • 2019-08-10
        • 2021-06-18
        • 2021-12-20
        相关资源
        最近更新 更多