【问题标题】:How to send FormData with MultiPart request using retrofit2?如何使用 Retrofit2 发送带有 MultiPart 请求的 FormData?
【发布时间】:2018-11-14 22:50:00
【问题描述】:

我正在开发一个 android 应用程序,我需要将多个图像从 android 应用程序上传到 php 服务器,目前我遇到了以下几个问题:

1) 我们可以将字段参数与图像一起作为多部分请求上传吗?如果可以,正确的请求格式应该是什么?

2 ) 下面是从 Android 上传多张图片的正确方法吗?

3 ) 顺利上传多张图片的正确策略应该是什么?

这是我的暂定代码,我认为它可以帮助任何人理解我想要实现的目标。

@Multipart
@FormUrlEncoded
@POST(AppConstants.BASE_URL+AppConstants.POST_AD)
Observable<Response<PostedAd>> postAd(@Header(AppConstants.HEADER_ACCESS_TOKEN) String headerToken,@Part("images[]") RequestBody files, @Field(AppConstants.FIELD_AD_TITLE) String adTitle, @Field(AppConstants.FIELD_AD_DESCRIPTION) String adDesc,@Field(AppConstants.FIELD_AD_ADDRESS) String adAddress,@Field(AppConstants.FIELD_AD_CITY) String city,@Field(AppConstants.FIELD_AD_STATE) String state,@Field(AppConstants.FIELD_AD_ZIPCODE) String zipcode,@Field(AppConstants.FIELD_AD_CONTACT_NUMBER) String contactNumber,@Field(AppConstants.FIELD_AD_TYPE) String adType,@Field(AppConstants.FIELD_AD_BUDGET_RATE) String adbudgetOrRate);

注意: REST API 的设计方式不允许我将所有字段作为单一正文参数发送。

【问题讨论】:

  • 这不是一个专业的意见,但是,我在我的一些项目中遇到了这个......不得不在服务器端为图片和我的其余数据创建单独的请求。另外,通常我会为 body 创建一个 DataModel 类。另一种方法是在请求正文中使用 @Path("url_path") 和 Multipart。
  • 好的,我刚刚更新了关于 REST api 设计的问题,不幸的是我无法将正文作为参数发送。我知道这是糟糕的设计,但我对此无能为力。我会检查@Path 请求。
  • 如果你对使用 okhtpp 没问题,你可以参考这个link

标签: android retrofit2 image-uploading multipartform-data url-encoding


【解决方案1】:

我找到了解决问题的方法。基本上我的问题是发送带有多个图像的表单数据,并且它存在于 Retrofit2 中。

因此,任何寻找相同要求的人都可以在这里找到可能对您有所帮助的链接:

Send Request Parameters with MultiPart Request using PartMap
Upload multiple images using Retrofit2

将这两种解决方案结合在一起,您可以将请求参数与多个文件一起发送。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-20
    • 2020-08-14
    • 2022-12-07
    相关资源
    最近更新 更多