(Retrofit)找不到类崩溃应用程序的转换器

时间:2015-09-02 01:10:32

标签: java android retrofit

所以Retrofit 2.0.0最近发布了,并没有真正有关如何使用它的任何更新示例,但我试图将其实现为基本的API调用。我得到了

java.lang.IllegalArgumentException: Unable to create converter for class` 

引起的

Caused by: java.lang.IllegalArgumentException: Could not locate converter for class orbyt.app.dataclass. Tried:
* retrofit.OkHttpBodyConverterFactory

尝试拨打api时。

6 个答案:

答案 0 :(得分:123)

我遇到了同样的问题。我通过添加:

来修复它
Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

到我的build.gradle

然后在创建我的Retrofit实例时指定转换器。

{{1}}

答案 1 :(得分:14)

在Retrofit 2.0中,转换器不包含在包中 当您使用Retrofit 2.0时,请确保遵循新的URL模式

基本网址:始终以/

结尾

@Url:不要以/

开头
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(Constants.API_BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();

有关2.0的详细信息,请点击此链接Retrofit 2.0: The biggest update

还要更新build.gradle。

答案 2 :(得分:7)

相应地更改改装版本

对于我来说,依赖已经存在了

compile 'com.squareup.retrofit2:retrofit:2.0.2'

对于gson 2.0.2,我改变了

compile 'com.squareup.retrofit2:converter-gson:2.0.2'

然后添加

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

答案 3 :(得分:6)

对于Retrofit V2,添加以下存储库 -

compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'

现在使用以下代码 -

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

希望它会有所帮助:)

答案 4 :(得分:3)

在最新的Retrofit 2.0中,您应该导入最新版本:

compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0'

小心拨打baseUrl(),在v2.0,它应该是" /"的结束,并且在该方法中,你不会用" /&开始#34;

@POST("classes/info")
Call<ContactBean> insertInfo(@Body ContactBean bean);

您可以看到Retrofit以获取更多信息! 希望有所帮助!

答案 5 :(得分:0)

my case(带有协同程序的科特琳)中,我收到了例外:

  

无法创建用于retrofit2.Call的转换器

     

用于方法Queries.exportPdf。

     

原因:   java.lang.IllegalArgumentException:无法找到ResponseBody   用于Retrofit2.Call的转换器

请求中存在问题:

onTableChange(pagination, filter, sorter){
    const { params, columns } = this.state;

    /** You can do any custom thing you want here. Below i update sort type in my state and pass it to my redux function */
    if(sorter.order != null)
        params.ordering = (sorter.order === 'descend' ? "-" : "")+ sorter.columnKey.toString();

    this.setState({params});
    this.props.listUsers(this.state.params);
}

从定义中删除了@FormUrlEncoded @Streaming @POST("export-pdf/") suspend fun exportPdf( @Field("token") token: String ): Call<ResponseBody> ,异常消失了。