2017-07-24 71 views
0

我想使用Retrofit进行API调用。 该调用将基本上发送一些数据,连同一个图像。 这是我写的东西:Android Retrofit只允许使用一种编码注释

@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); 

可以看出,代码中有两种编码:在@Multipart支持图片上传和@FormurlEncoded需要使用@Field注释时使用。所以,如果其中任何一个都不存在,我就无法工作。一次只允许一个Encoding注释。 我该如何解决这个问题?请帮助

回答

0

据我所知,你不能同时执行FormUrlEncoded和Multipart。

定义你的界面是这样的:

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

而对于每一个已经@Field,您拨打的服务,你会做到这一点在你的代码参数:

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

我找到了一个更好尝试周围后的方式。 希望这可以帮助任何其他人

@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);