Daher wurde Retrofit 2.0.0 kürzlich veröffentlicht und es gibt nicht wirklich aktualisierte 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, die API anzurufen.
Antworten:
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 an, wenn Sie meine Retrofit-Instanz erstellen.
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constants.API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build();
quelle
.addConverterFactory(GsonConverterFactory.create())
. Das Verbinden der Konverter über Gradle ist offensichtlich eine sauberere Option, daher wird dies als Antwort markiert.converter-gson
Ihre Version für sichretrofit
selbst übereinstimmtIn Retrofit 2.0 ist Converter nicht im Paket enthalten. 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 diesem Link. Nachrüstung 2.0: Das größte Update
Und auch build.gradle aktualisieren.
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
Fügen Sie die Erweiterung in die Datei build.gradle auf Projektebene ein
ext { retrofit_version= "2.x.x" }
quelle
Nachrüstversion entsprechend ändern
Für mich war unter Abhängigkeit schon da
compile 'com.squareup.retrofit2:retrofit:2.0.2'
Für gson 2.0.2 habe ich mich 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();
quelle
Fügen Sie für Retrofit V2 die folgenden Repositorys 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 nun den folgenden Code -
Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(GsonConverterFactory.create()) .build();
Hoffe es wird helfen :)
quelle
In der neuesten Version von 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
baseUrl()
Sie , in Version 2.0 auf, es sollte das Ende von "/" sein, und bei der Methode würden Sie die URL nicht mit "/" beginnen.@POST("classes/info") Call<ContactBean> insertInfo(@Body ContactBean bean);
Und Sie können Retrofit sehen , um weitere Informationen zu erhalten! Hoffe Hilfe!
quelle
In meinem Fall (Kotlin mit Coroutinen) erhielt ich die Ausnahme:
Ein Problem war in einer Anfrage:
@FormUrlEncoded @Streaming @POST("export-pdf/") suspend fun exportPdf( @Field("token") token: String ): Call<ResponseBody>
Aus
suspend
der Definition entfernt und Ausnahmen verschwunden.quelle