webentwicklung-frage-antwort-db.com.de

(Nachrüstung) Konverter für klassenabstürzende App nicht gefunden

Daher wurde Retrofit 2.0.0 kürzlich veröffentlicht und es gibt keine wirklich aktualisierten Beispiele für die Verwendung, aber ich versuche, es für einen grundlegenden API-Aufruf zu implementieren. Ich bekomme eine

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

verursacht durch

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

Beim Versuch, den API-Aufruf zu tätigen.

76
Orbit

Ich hatte das gleiche Problem. Ich habe es behoben, indem ich Folgendes hinzufügte:

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

zu meinem build.gradle

Geben Sie dann den Konverter an, wenn Sie meine Retrofit-Instanz erstellen.

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

In Retrofit 2.0 ist Converter nicht im Paket enthalten, und wenn Sie Retrofit 2.0 verwenden, stellen Sie sicher, dass Sie dem neuen URL-Muster folgen

Basis-URL: endet immer mit/

@Url: Beginne NICHT mit/

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

Weitere Informationen zu 2.0 finden Sie unter folgendem Link Retrofit 2.0: Das größte Update

Und auch build.gradle aktualisieren.

14

Nachrüstversion entsprechend ändern

Für mich unten war die Abhängigkeit schon da

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

Für gson 2.0.2 habe ich geändert

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

Dann füge hinzu

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

Für Retrofit V2 fügen Sie die folgenden Repositories hinzu -

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'

Verwenden Sie jetzt den folgenden Code -

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

Hoffe es wird helfen :)

6
Neo

Im neuesten Retrofit 2.0 sollten Sie die neueste Version importieren:

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'

Rufen Sie baseUrl() , bei v2.0 auf, es sollte das Ende von "/" sein, und bei der Methode würden Sie die URL nicht mit "/" starten.

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

Und Sie können Retrofit sehen, um mehr Informationen zu erhalten! Hoffe Hilfe!

3
joe

In mein Fall (Kotlin mit Koroutinen) erhielt ich die Ausnahme:

Konverter für retrofit2.Call kann nicht erstellt werden

für die Methode Queries.exportPdf.

Auslöser: Java.lang.IllegalArgumentException: Der ResponseBody-Konverter für retrofit2.Call konnte nicht gefunden werden

Ein Problem war in einer Anfrage:

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

suspend aus der Definition entfernt und Ausnahmen verschwunden.

0
CoolMind