2016-02-05 1 views
1

Как это исправить?Модернизация 2 бета-4. Android 6. Невозможно создать конвертер

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$1.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: модифицированную: 2.0.0-Beta4 и com.squareup.retrofit2: конвертер-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); 

ответ

0

Вы должны указать конвертер для класса ServiceResponse для того, чтобы gson сериализации/десериализации вашего класса Effe ctively он будет идти, как этот

GsonBuilder builder = new GsonBuilder(); 
builder.registerTypeAdapter(ServiceResponse.class, new ServiceResponseJson()); 
Gson gson = builder.build(); 

позже, вы должны будете предоставить эту gson экземпляр вашего gson конвертер завод как этот

....addConverterFactory(GsonConverterFactory.create(gson)) 

ServiceResponseJson будет осуществлять JsonDeserializer и/или JsonSerializer

+0

Gson gsonBuilder = новый GsonBuilder() excludeFieldsWithModifiers (Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC) .serializeNulls() .create(); –

0

Существует isssue при использовании Retrofit2 в Android M, как указано в here

Одним из раствора, который работал на меня:.

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(URLWebService) 
     .addConverterFactory(GsonConverterFactory.create(
           new GsonBuilder() 
           .excludeFieldsWithoutExposeAnnotation() 
           .create() 
          )) 
     .client(okHttpClient) 
     .build();