2016-02-05 3 views
1

Comment le réparer?Rénovation 2 beta-4. Android 6. Impossible de créer le convertisseur

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) 

J'utilise com.squareup.retrofit2: rénovation: 2.0.0-beta4 et com.squareup.retrofit2: convertisseur gson: 2.0.0-beta4

Adaptateur

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

Interface

@GET("/integration.php?command=getServices") 
Call<ServiceResponse> getServices(@Query("city") String cityId); 

Répondre

0

Vous devez spécifier un convertisseur pour la classe ServiceResponse afin que gson sérialise/désérialise votre classe effe ctively il irait comme ça

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

plus tard, vous aurez à fournir cette instance gson à votre usine de conversion de gson comme celui-ci

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

ServiceResponseJson devra mettre en œuvre JsonDeserializer et/ou JsonSerializer

+0

Gson gsonBuilder = new GsonBuilder() excludeFieldsWithModifiers (Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC) .serializeNulls() .Create(); –

0

Il y a un isssue lors de l'utilisation Retrofit2 dans M Android, comme mentionné dans here

Une des solution de travail pour moi est:.

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