web-dev-qa-db-fra.com

(Retrofit) Impossible de localiser le convertisseur pour une application bloquée par la classe

Donc, Retrofit 2.0.0 a été publié récemment et il n’ya pas vraiment d’exemples mis à jour sur son utilisation, mais je tente de l’implémenter pour un appel d’API de base. Je reçois un

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

causé par

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

En essayant de faire l'appel api.

76
Orbit

Je faisais face au même problème. Je l'ai corrigé en ajoutant:

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

à mon build.gradle

Puis spécifiez le convertisseur lors de la création de mon instance Retrofit.

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

Dans Retrofit 2.0, Converter n'est pas inclus dans le package. Lorsque vous utilisez Retrofit 2.0, assurez-vous de suivre le nouveau modèle d'URL.

URL de base: se termine toujours par/

@ Url: NE PAS commencer par/

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

Pour plus d’informations sur la version 2.0, suivez ce lien Retrofit 2.0: La plus grande mise à jour

Et aussi mettre à jour build.gradle.

14
Ajit Kumar Dubey

Changer la version de rattrapage en conséquence

Pour moi, la dépendance était déjà là

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

Pour gson 2.0.2 j'ai changé

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

Puis ajouter

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

Pour Retrofit V2, ajoutez les référentiels suivants -

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'

Maintenant, utilisez le code ci-dessous -

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

J'espère que ça va aider :)

6
Neo

Dans la dernière version 2.0, vous devez importer la dernière 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'

Soyez prudent appelez baseUrl() , à la v2.0, cela devrait être fin de "/", et à la méthode, vous ne commenceriez pas par url avec "/"

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

Et vous pouvez voir Retrofit pour obtenir plus d'informations! J'espère vous aider!

3
joe

Dans mon cas (Kotlin avec coroutines) j'ai reçu l'exception:

Impossible de créer un convertisseur pour retrofit2.Call

pour la méthode Queries.exportPdf.

Causé par: Java.lang.IllegalArgumentException: impossible de localiser le convertisseur ResponseBody pour retrofit2.Call

Un problème était dans une demande:

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

Suppression de suspend de la définition et des exceptions disparues.

0
CoolMind