(Retrofit) Konvertierer für App mit Klassenabsturz konnte nicht gefunden werden

Lesezeit: 4 Minuten

Benutzer-Avatar
Orbit

Retrofit 2.0.0 wurde also kürzlich veröffentlicht und es gibt nicht wirklich aktualisierte Beispiele zur Verwendung, aber ich versuche, es für einen einfachen API-Aufruf zu implementieren. Ich bekomme ein

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.

  • weiß nicht Nachrüsten, ich vermute mal es gibt einen Hinweis wer den Konverter irgendwo angeben kann.

    – Jiang YD

    2. September 2015 um 1:18 Uhr

  • @JiangYD nicht sicher, was du meinst

    – Umlaufbahn

    2. September 2015 um 1:33 Uhr

  • Sie müssen mehr Code zu diesem Fehler posten. Posten Sie Ihren API-Aufruf.

    – Heloisasim

    2. September 2015 um 4:09 Uhr

  • Das Beispiel auf square.github.io/retrofit wirft diesen Fehler. Probieren Sie es aus, wenn Sie der Person, die die Frage stellt, nicht glauben oder wenn Sie Einzelheiten wünschen. Sie versuchen nicht, irgendetwas Besonderes zu tun.

    – Andreas Köster

    13. Mai 2016 um 3:29 Uhr


Benutzer-Avatar
YacSrk

Ich stand vor dem gleichen Problem. Ich habe es behoben, indem ich hinzugefügt habe:

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

zu meinem build.gradle

Geben Sie dann den Konverter beim Erstellen meiner Retrofit-Instanz an.

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

  • Also habe ich das letzte Nacht eigentlich durch Kopieren behoben diese 2 Klassen in mein Projekt und Aufruf der .addConverterFactory(GsonConverterFactory.create()). Das Verknüpfen der Konverter über Gradle ist offensichtlich eine sauberere Option, also markieren Sie dies als Antwort.

    – Umlaufbahn

    2. September 2015 um 20:42 Uhr


  • Stellen Sie außerdem sicher, dass Ihre Version für converter-gson entspricht Ihrer Version für retrofit selbst – siehe stackoverflow.com/questions/32902157/…

    – Gravitron

    6. November 2015 um 17:27 Uhr

  • Diese Antwort ist veraltet, Gradle wird nicht einmal mit dieser Version synchronisiert, geschweige denn kompiliert. Sie müssen ‘com.squareup.retrofit2:converter-gson:2.0.2’ kompilieren.

    – Andreas Köster

    13. Mai 2016 um 3:24 Uhr

Benutzer-Avatar
Ajit Kumar Dubey

In Retrofit 2.0 ist der Konverter 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: NICHT mit / beginnen

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

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

Und aktualisieren Sie auch build.gradle.

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

Und fügen Sie die Erweiterung in der build.gradle-Datei auf Projektebene hinzu

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

  • Diese Antwort enthält nicht die relevante Gradle-Abhängigkeit.

    – Andreas Köster

    13. Mai 2016 um 3:24 Uhr

  • @Ak Ich habe den besten größten Update-Link erwähnt, den sie all diese Dinge erwähnt haben. API-Basis muss auf aktuelle Version aktualisiert werden

    – Ajit Kumar Dubey

    13. Mai 2016 um 4:40 Uhr


Nachrüstversion entsprechend ändern

Bei mir war unten Abhängigkeit schon da

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

Für gson 2.0.2 habe ich gewechselt

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();

  • Diese Antwort ist aktuell, sie sollte mehr Stimmen haben als die veraltete und mehr als die, die nicht einmal die relevante Abhängigkeit enthält.

    – Andreas Köster

    13. Mai 2016 um 3:26 Uhr

Fügen Sie für Retrofit V2 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 hilft 🙂

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'

Seien Sie vorsichtig, rufen Sie an baseUrl(),bei v2.0 sollte es das Ende von „https://stackoverflow.com/“ sein, und bei der Methode würden Sie die URL nicht mit „https://stackoverflow.com/“ beginnen.

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

Und Sie können sehen Nachrüsten um weitere Informationen zu erhalten! Hoffe Hilfe!

Benutzer-Avatar
CoolMind

In meinem Fall (Kotlin mit Coroutinen) habe ich die Ausnahme erhalten:

Konverter für Retrofit2.Call kann nicht erstellt werden

für Methode Queries.exportPdf.

Verursacht durch: java.lang.IllegalArgumentException: ResponseBody-Konverter für retrograde2.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>

ENTFERNT suspend aus Definition und Ausnahmen verschwunden.

Benutzer-Avatar
ilyamuromets

Ich weiß, dass es eine alte Frage ist. Aber ich stand vor dem gleichen Problem. Und keine Antwort passt zu mir.
Laut dem Dokumentationes wird mit Unterstützung für OkHttp ausgeliefert RequestBody und ResponseBody Typen.
Muss also nicht aufgenommen werden .addConverterFactory(AnyFactory.create()) in Ihrem Builder. Es besteht die Möglichkeit, dass mit dem Rohtyp einer Antwort gearbeitet wird. Alles, was Sie brauchen, ist zurückzukehren Response<ResponseBody> oder Call<ResponseBody> oder Single<Response<ResponseBody>> von einer Schnittstelle von api.

1245210cookie-check(Retrofit) Konvertierer für App mit Klassenabsturz konnte nicht gefunden werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy