【问题标题】:Unable to create call adapter in retrofit 2.0.0无法在改造 2.0.0 中创建呼叫适配器
【发布时间】:2026-01-30 23:45:01
【问题描述】:

我正在尝试将改造 2.0.0-beta 集成到我的应用中。

{
     "success":true,
     "categoryDetails":[
    {
        "topicId":550,
        "categoryName":"Classshshs",
    “categoryImageUrl” : “http://s3-apdd-southeast-1.amazonaws.com/tv-dev/member/photo/883191-medium130.jpg”,
    },
    {
    "topicId":550661,
        "categoryName":"Cricket sss",
    “categoryImageUrl” : “http://s3-apdd-southeast-1.amazonaws.com/tv-dev/member/photo/883191-medium130.jpg”,
    }

   ],
   "totalCategoryCount":2
}

我的休息适配器

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https://s3-ap-southeast-1.amazonaws.com").
                    addConverterFactory(GsonConverterFactory.create())
            .build();

    service=retrofit.create(RetrofitService.class);

我的调用方法

Call<Object> call=service.listRs();
    call.enqueue(new Callback<Object>() {
        @Override
        public void onResponse(Response<Object> response) {
            Log.e(TAG,"sucess"+response.toString());



        }

        @Override
        public void onFailure(Throwable t) {

        }
    });


Caused by: java.lang.IllegalArgumentException: Unable to create call adapter for interface retrofit.Call
for method RetrofitService.listRs
        at retrofit.Utils.methodError(Utils.java:201)
        at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:51)
        at retrofit.MethodHandler.create(MethodHandler.java:29)
        at retrofit.Retrofit.loadMethodHandler(Retrofit.java:138)
        at retrofit.Retrofit$1.invoke(Retrofit.java:127)
        at java.lang.reflect.Proxy.invoke(Proxy.java:397)
        at $Proxy1.listRs(Unknown Source)

【问题讨论】:

  • 不确定是否是复制粘贴问题,但您的 JSON 无效:每个 categoryImageUrl 值之后都有一个额外的逗号。
  • 您能具体说明您收到的错误信息吗?是编译错误吗?
  • @akodiakson 是复制粘贴错误..
  • 您可以将其粘贴为编辑而不是第 3 方网站吗?

标签: android json retrofit


【解决方案1】:

在 gradle 中试试这个

compile 'com.squareup.retrofit2:retrofit:2.3.0'    
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.okhttp3:okhttp:3.8.1'

【讨论】:

【解决方案2】:

尝试使用回调执行器,像这样:

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://s3-ap-southeast-1.amazonaws.com").
                addConverterFactory(GsonConverterFactory.create())
        .callbackExecutor(Executors.newFixedThreadPool(1))
        .build();

【讨论】: