Android Retrofit只允许一个编码注释

时间:2017-07-24 20:28:32

标签: android xml retrofit2

我想使用Retrofit进行API调用。 该调用基本上会发送一些数据和图像。 这就是我写的:

@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支持图像上传,使用@Field注释时需要使用@FormurlEncoded。因此,如果缺少任何这些,我就无法工作YET改造一次只允许一个编码注释。 我该怎么做?请帮忙

2 个答案:

答案 0 :(得分:1)

我在尝试后找到了更好的方法。 希望这可以帮助其他任何人

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

答案 1 :(得分: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);