如何使用Retrofit发送图像文件(@Fields)

Mon*_*ora 6 android multipart retrofit2

这里我使用@Fields数据@FormUrlEncoded但是我必须在同一个API中@Part("user_image") RequestBody file使用@Multipart.怎么可能?提前致谢.

@FormUrlEncoded
@POST("/datingapp/index.php/Webservice")
Call<Result> signupUser(@Field("user_name") String name,
                             @Field("age") String age,
                             @Field("work") String work,
                             @Field("home_town") String home_town,
                             @Field("gender") String gender,
                             @Field("interest") String interest,
                             @Field("study") String study,
                             @Field("email") String email,
                             @Field("password") String password,
                             @Field("device_id") String device_id,
                             @Field("device_type") String device_type,
                             @Part("user_image") RequestBody file,
                             @Field("signup") String signup); 
Run Code Online (Sandbox Code Playgroud)

Lio*_*and 7

Http协议不允许在同一请求中使用2个Content-Type.所以你必须选择:

  • 应用程序/ x-WWW窗体-urlencoded
  • 多部分/格式数据

application/x-www-form-urlencoded通过使用注释@FormUrlEncoded来发送图像,您必须将整个文件转换为文本(例如base64).

multipart/form-data通过描述您的请求,可以使用更好的方法:

@Multipart
@POST("/datingapp/index.php/Webservice")
Call<Result> signupUser(@Part("user_name") String name,
                         @Part("age") String age,
                         @Part("work") String work,
                         @Part("home_town") String home_town,
                         @Part("gender") String gender,
                         @Part("interest") String interest,
                         @Part("study") String study,
                         @Part("email") String email,
                         @Part("password") String password,
                         @Part("device_id") String device_id,
                         @Part("device_type") String device_type,
                         @Part("user_image") RequestBody file,
                         @Part("signup") String signup); 
Run Code Online (Sandbox Code Playgroud)