2 votes

En utilisant @FieldMap et @Part dans une seule requête dans Retrofit2 obtient java.lang.IllegalArgumentException: Seule une annotation d'encodage est autorisée pour la méthode

Cela pourrait sembler similaire à des questions précédentes mais aucune ne répond réellement à ma question. J'ai besoin de Poster plusieurs champs et plusieurs images dans une seule requête en utilisant retrofit2 et je reçois cette erreur

java.lang.IllegalArgumentException: Seule une annotation d'encodage est autorisée pour la méthode xxx

je suis en train d'utiliser

@Multipart
@FormUrlEncoded

car @Field nécessite @FormUrlEncoded et @Part nécessite @Multipart. La chose la plus logique à faire est de supprimer l'annotation @FormUrlEncoded, mais comment faire à partir de là. Maintenant la question est comment puis-je accomplir la tâche d'envoyer mon post dans une seule requête.

voici l'interface

@Multipart
@FormUrlEncoded
@POST("upload")
Call uploadPost(@FieldMap Map map,
                       @Part MultipartBody.Part image1,
                       @Part MultipartBody.Part image2,
                       @Part MultipartBody.Part image3);

2voto

Sumit Saxena Points 449
@Multipart
@POST("upload")
Call uploadPost(
        @PartMap() Map descriptions,
        @Part List images);

utilisez cette interface.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X