Je suis face à l'erreur suivante chaque fois que je fais une demande de serveur depuis que je migré de retrofit 1,9 à 2,0Rénovation 2 et GSON java.lang.IllegalArgumentException: carte du champ contient la valeur null pour la clé
java.lang.IllegalArgumentException: Field map contained null
value for key 'installments'.
la méthode que j'appelle obtient une carte avec tous les paramètres tels que le code ci-dessous:
@FormUrlEncoded
@POST("/api/method")
Call<Response<Payment>> pay(@FieldMap Map<String, String> fields);
mais semble que chaque fois que nous avons l'une des entrées d'une valeur NULL, elle génère une exception et n'exécutent même pas la demande. Nous utilisons également Dagger 2. voici comment le GSON est créé avec un Converter.Factory:
@Provides
@Singleton
Converter.Factory provideGsonConverterFactory() {
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd hh:mm:ss")
.setPrettyPrinting()
.create();
return GsonConverterFactory.create(gson);
}
Avant de migrer vers Retrofit 2.0 nous n'avions pas ce problème, ce qui est étrange.
En effet, Jackson a une propriété qui le ferait:
ObjectMapper mapper = new ObjectMapper().configure(SerializationConfig
.Feature.WRITE_NULL_MAP_VALUES, false);
Qui jette cette erreur, gson ou retrofit/okhhtp? –
au début je pensais que c'était GSON mais, plus tard, j'ai découvert qu'il s'agissait de Retrofit. vérifiez la ligne 208 https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/ParameterHandler.java –
BTW, je suis toujours intéressé à savoir comment faire cela. –