【问题标题】:'stream ended unexpectedly' error while Multipart Image Upload using Retrofit 2.0 - Android使用 Retrofit 2.0 上传多部分图像时出现“流意外结束”错误 - Android
【发布时间】:2019-09-11 12:53:07
【问题描述】:

我正在使用 Retrofit 2.0 将图像上传到 Android 中的服务器。以下是接口代码。

    @Headers("Content-Type: multipart/form-data; boundary=MyMediaFormBoundary")
@Multipart
@POST("api/media/upload/v1")
Call<MyResponse> uploadMedia(@Header("authToken") String authToken,
                                      @Part("media_file\"; filename=\"media_file.jpg\" ") RequestBody filePart,
                                      @Part("media_format") RequestBody format,
                                      @Part("media_library_id") RequestBody noteId,
                                      @Part("media_title") RequestBody title);

这是我创建请求正文参数的代码

File file = new File(mediaFileUri.getPath());
                RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file);
                RequestBody formatBody = RequestBody.create(MediaType.parse("text/plain"), format);
                RequestBody titleBody = RequestBody.create(MediaType.parse("text/plain"), title);
                RequestBody idBody = RequestBody.create(MediaType.parse("text/plain"), id + "");

当我使用上述参数调用我的接口方法时,我收到错误“蒸汽意外结束”,我想知道我到底做错了什么。

我也尝试在上述界面中使用 MultipartBody.Part 改造对象,但结果仍然相同。

以下是我用作参考的链接: first link second link

注意:我怀疑这与错误的请求有关,但我没有从后端团队获得太多帮助,它正在 iOS 上运行。我拥有的唯一信息是服务器端正在针对密钥“media_file”获取媒体文件,但我想知道在哪里使用它。

【问题讨论】:

  • 您是否能够解决问题或找到罪魁祸首?

标签: android retrofit multipartform-data


【解决方案1】:

如果您发送的是图片,那么为什么媒体类型是 text/plain?

【讨论】:

  • 这不是答案。这可以添加为问题的评论。第二件事:对于媒体文件,媒体类型是'image/*',对于其他参数,它是'text/plain'。请重新检查。
猜你喜欢
  • 2021-05-28
  • 2012-11-26
  • 2014-10-14
  • 2017-10-09
  • 1970-01-01
  • 2021-05-18
  • 2013-08-10
  • 1970-01-01
  • 2013-12-10
相关资源
最近更新 更多