无法找到类崩溃应用程序的转换器

所以最近才发布了龟裂2.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 电话的时候。

44081 次浏览

I was facing the same issue. I fixed it by adding :

compile 'com.squareup.retrofit2:converter-gson:<latest-version>'

to my build.gradle

Then specify the converter when creating my Retrofit instance.

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

In Retrofit 2.0, Converter is not included in the package and when you are using Retrofit 2.0 Make Sure follow new URL pattern

Base URL: always ends with /

@Url: DO NOT start with /

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

For more information about 2.0 Follow this link Retrofit 2.0: The biggest update

And also update build.gradle.

implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"

And add the extension in project level build.gradle file

ext {
retrofit_version= "2.x.x"
}

For Retrofit V2 add the following repositories -

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'

Now use below code -

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

Hope it will help :)

In the latest Retrofit 2.0,you should import the latest version :

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'

Be careful call baseUrl(),at v2.0,it should be end of "/",and at the method ,you would’t start thr url with"/"

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

And you can see Retrofit to get more info! Hope help !

Change retrofit version accordingly

For me below dependency was there already

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

For gson 2.0.2 I changed

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

Then add

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

In my case (Kotlin with coroutines) I received the exception:

Unable to create converter for retrofit2.Call

for method Queries.exportPdf.

Caused by: java.lang.IllegalArgumentException: Could not locate ResponseBody converter for retrofit2.Call

A problem was in a request:

@FormUrlEncoded
@Streaming
@POST("export-pdf/")
suspend fun exportPdf(
@Field("token") token: String
): Call<ResponseBody>

Removed suspend from definition and exceptions disappeared.

I know that it's old question. But I've faced the same problem. And no one answer suits to me.
According to the documentation, it ships with support for OkHttp's RequestBody and ResponseBody types.
So no need to include .addConverterFactory(AnyFactory.create()) in your builder. There is an opportunity works with raw type of a response. All you need is to return Response<ResponseBody> or Call<ResponseBody> or Single<Response<ResponseBody>> from an interface of api.