【问题标题】:Failed to invoke public okhttp3.RequestBody() with no args无法调用没有参数的公共 okhttp3.RequestBody()
【发布时间】:2017-06-05 01:52:21
【问题描述】:

1.这是我使用改造错误的时候

第一步:

public interface RequestService {
    @POST ("home/indexThree")
    Call<RequestBody> getHomeinfo(@Body RequestBody info);
}

第二步:

 Retrofit retrofit = new Retrofit.Builder()
             .baseUrl(url)
             .addConverterFactory(GsonConverterFactory.create())
             .build();
    RequestService requestService = retrofit.create(RequestService.class);
    RequestBody body = RequestBody.create(JSON, jsonObject.toString());
            Call<RequestBody> homeinfo = requestService.getHomeinfo(body);
    homeinfo.enqueue(new Callback<RequestBody>() {
        @Override
        public void onResponse(Call<RequestBody> call, Response<RequestBody> response) {
            System.out.println("response"+response.body().toString());
        }

        @Override
        public void onFailure(Call<RequestBody> call, Throwable t) {
            System.out.println("onFailure"+t.getMessage().toString());
        }
    });

我在网上搜索了很长时间。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。谢谢!

【问题讨论】:

  • 哪个错误?可以给logcat吗?
  • 您的问题非常不清楚,但可能与stackoverflow.com/questions/30358545/…重复
  • log: java.lang.RuntimeException: 无法调用 public okhttp3.RequestBody() with no args

标签: android okhttp3


【解决方案1】:

使用来自服务器的正确调用模型类响应,这些错误显示是因为你使用了调用。

【讨论】:

  • 使用调用
【解决方案2】:
Call<LoginModel>call=apiService.getForgotPassword(Utill.encodeString(json));call.enqueue(new Callback<LoginModel>() {
        @Override
        public void onResponse(Call<LoginModel> call, 
        Response<LoginModel> response) {
            pDialog.dismiss();
            if (response.body() != null) {
                LoginModel clientModel = response.body();
                if (clientModel.getResult().equalsIgnoreCase("OK")) {
                    Utill.showCenteredToast(LoginActivity.this, clientModel.getResult());

                    dialog.dismiss();
                } else {
                    dialog.dismiss();
                    Utill.showCenteredToast(LoginActivity.this, clientModel.getResult());
                }
            }
        }

【讨论】:

    【解决方案3】:

    我也遇到了这个问题,我找到了问题的答案,我认为你应该写Call&lt;ResponseBody&gt;

    【讨论】:

      【解决方案4】:

      我昨天遇到了这个问题,最后解决了。由于改造是安静的,所以调用不正确,应该是调用,其中CallBackBean是返回给你的bean。 详情请见http://blog.csdn.net/u013795543/article/details/70948978

      【讨论】:

      • 如果相关细节在这里,您的答案将会大大得到改善。事实上,这可能回答了 OP 的问题;但请显示更新后的代码。
      【解决方案5】:

      使用ResponseBody 而不是requestbody,解决了我的问题:

      public interface RequestService {
      @POST ("home/indexThree")
      Call<ResponseBody> getHomeinfo(@Body RequestBody info);
      

      }

      【讨论】:

        猜你喜欢
        • 2019-07-28
        • 1970-01-01
        • 2020-11-07
        • 1970-01-01
        • 2013-02-26
        • 2018-08-23
        • 1970-01-01
        • 2014-04-22
        • 1970-01-01
        相关资源
        最近更新 更多