Así que Retrofit 2.0.0 se lanzó recientemente y realmente no hay ejemplos actualizados sobre cómo usarlo, pero estoy tratando de implementarlo para una llamada API básica. Estoy recibiendo un
java.lang.IllegalArgumentException: Unable to create converter for class`
causado por
Caused by: java.lang.IllegalArgumentException: Could not locate converter for class orbyt.app.dataclass. Tried:
* retrofit.OkHttpBodyConverterFactory
Al intentar hacer la llamada api.
Respuestas:
Estaba enfrentando el mismo problema. Lo arreglé agregando:
compile 'com.squareup.retrofit2:converter-gson:<latest-version>'
a mi build.gradle
Luego especifique el convertidor al crear mi instancia de Retrofit.
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constants.API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build();
fuente
.addConverterFactory(GsonConverterFactory.create())
. Vincular los convertidores a través de gradle es obviamente una opción más limpia, por lo que marcar esto como la respuesta.converter-gson
coincida con la suyaretrofit
propia; consulte stackoverflow.com/questions/32902157/…En Retrofit 2.0, Converter no está incluido en el paquete y cuando esté utilizando Retrofit 2.0 asegúrese de seguir el nuevo patrón de URL
URL base: siempre termina con /
@Url: NO empiece con /
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constants.API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build();
Para obtener más información sobre 2.0, siga este enlace Retrofit 2.0: La mayor actualización
Y también actualice build.gradle.
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
Y agregue la extensión en el archivo build.gradle de nivel de proyecto
ext { retrofit_version= "2.x.x" }
fuente
Cambie la versión de actualización en consecuencia
Para mí debajo de la dependencia ya estaba ahí
compile 'com.squareup.retrofit2:retrofit:2.0.2'
Para gson 2.0.2 cambié
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
Luego añade
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constants.API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build();
fuente
Para Retrofit V2, agregue los siguientes repositorios:
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'
Ahora use el siguiente código:
Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(GsonConverterFactory.create()) .build();
Espero que ayude :)
fuente
En el último Retrofit 2.0, debe importar la última versión:
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'
Tenga cuidado al llamar
baseUrl()
, en la v2.0, debería estar al final de "/", y en el método, no comenzaría la URL con "/"@POST("classes/info") Call<ContactBean> insertInfo(@Body ContactBean bean);
¡Y puede ver Retrofit para obtener más información! ¡Espero ayuda!
fuente
En mi caso (Kotlin con corrutinas) recibí la excepción:
Hubo un problema en una solicitud:
@FormUrlEncoded @Streaming @POST("export-pdf/") suspend fun exportPdf( @Field("token") token: String ): Call<ResponseBody>
Eliminado
suspend
de la definición y desaparecieron las excepciones.fuente