改装 2 beta-4。 Android 6.无法创建转换器
Retrofit 2 beta-4. Android 6. Unable to create convertor
如何解决?
Process: www.palchiki.com.palchiki, PID: 2047
java.lang.IllegalArgumentException: Unable to create converter for class www.palchiki.com.palchiki.model.ServiceResponse
for method APIWebService.getServices
at retrofit2.Utils.methodError(Utils.java:154)
at retrofit2.MethodHandler.createResponseConverter(MethodHandler.java:62)
at retrofit2.MethodHandler.create(MethodHandler.java:33)
at retrofit2.Retrofit.loadMethodHandler(Retrofit.java:164)
at retrofit2.Retrofit.invoke(Retrofit.java:145)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy2.getServices(Unknown Source)
at www.palchiki.com.palchiki.fragment.ServiceFragment.onCreateView(ServiceFragment.java:94)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
我使用 com.squareup.retrofit2:retrofit:2.0.0-beta4 和 com.squareup.retrofit2:converter-gson:2.0.0-beta4
适配器
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URLWebService)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
界面
@GET("/integration.php?command=getServices")
Call<ServiceResponse> getServices(@Query("city") String cityId);
您必须为 class ServiceResponse 指定转换器,以便 gson 有效地 serialize/deserialize 您的 class
它会像这样
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(ServiceResponse.class, new ServiceResponseJson());
Gson gson = builder.build();
稍后,您必须像这样向您的 gson 转换器工厂提供此 gson 实例
....addConverterFactory(GsonConverterFactory.create(gson))
ServiceResponseJson 必须执行
JsonDeserializer and/or JsonSerializer
在 Android M 中使用 Retrofit2 时出现问题,如 here
中所述
对我有用的解决方案之一是:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URLWebService)
.addConverterFactory(GsonConverterFactory.create(
new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()
))
.client(okHttpClient)
.build();
如何解决?
Process: www.palchiki.com.palchiki, PID: 2047
java.lang.IllegalArgumentException: Unable to create converter for class www.palchiki.com.palchiki.model.ServiceResponse
for method APIWebService.getServices
at retrofit2.Utils.methodError(Utils.java:154)
at retrofit2.MethodHandler.createResponseConverter(MethodHandler.java:62)
at retrofit2.MethodHandler.create(MethodHandler.java:33)
at retrofit2.Retrofit.loadMethodHandler(Retrofit.java:164)
at retrofit2.Retrofit.invoke(Retrofit.java:145)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy2.getServices(Unknown Source)
at www.palchiki.com.palchiki.fragment.ServiceFragment.onCreateView(ServiceFragment.java:94)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
我使用 com.squareup.retrofit2:retrofit:2.0.0-beta4 和 com.squareup.retrofit2:converter-gson:2.0.0-beta4
适配器
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URLWebService)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
界面
@GET("/integration.php?command=getServices")
Call<ServiceResponse> getServices(@Query("city") String cityId);
您必须为 class ServiceResponse 指定转换器,以便 gson 有效地 serialize/deserialize 您的 class 它会像这样
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(ServiceResponse.class, new ServiceResponseJson());
Gson gson = builder.build();
稍后,您必须像这样向您的 gson 转换器工厂提供此 gson 实例
....addConverterFactory(GsonConverterFactory.create(gson))
ServiceResponseJson 必须执行 JsonDeserializer and/or JsonSerializer
在 Android M 中使用 Retrofit2 时出现问题,如 here
中所述对我有用的解决方案之一是:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URLWebService)
.addConverterFactory(GsonConverterFactory.create(
new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()
))
.client(okHttpClient)
.build();