2017-07-24 2 views
0

Je veux faire un appel d'API à l'aide Retrofit. L'appel va essentiellement envoyer des données, avec une image. C'est ce que j'ai écrit:Android Retrofit Une seule annotation de codage permet

@POST("notes/new") 
@Multipart 
@FormUrlEncoded 
Call<Note> getData (@Field("title") String title, 
        @Field("note") String note, 
        @Header("Authorization") String auth, 
        @Part MultipartBody.Part file, 
        @Part("file")RequestBody image); 

Comme on le voit, le code a deux codages: le @Multipart pour soutenir le téléchargement d'images et @FormurlEncoded doit être utilisé lors de l'utilisation de l'annotation @field. Donc, je ne peux pas travailler si l'un d'entre eux est absent. YET Retrofit n'autorise qu'une seule annotation d'encodage à la fois. Comment je m'y prend? S'il vous plaît aider

Répondre

0

Pour autant que je sache, vous ne pouvez pas faire les deux FormUrlEncoded et multipart.

Définissez votre quelque chose d'interface comme ceci:

@POST("notes/new") 
@Multipart 
Call<Response> postFile(@Part MultipartBody.Part title,..., @Part MultipartBody.Part file,...); 

Et pour chaque paramètre que vous avait @field feriez dans votre code où vous appelez le service:

String title = "MyTitle"; 
final MultipartBody.Part titlePart = MultipartBody.Part.createFormData("title", title); 
0

J'ai trouvé un meilleur Bien après avoir essayé. Espérons que cela aide toute autre personne là-bas

@POST("notes/new") 
@Multipart 
Call<Note> getData (@Part ("title") String title, 
        @Part("note") String note, 
        @Header("Authorization") String auth, 
        @Part MultipartBody.Part file, 
        @Part("file")RequestBody image);