【问题标题】:send multipart with files using retrofit:2.0.0-beta1使用改造发送多部分文件:2.0.0-beta1
【发布时间】:2016-02-15 01:44:21
【问题描述】:

我在向服务器发送 multipartRequest 时遇到问题。

RequestBody file = RequestBody.create(MediaType.parse("application/json"), myFile);
        return apiService.updateProfile2(token, file);


@Multipart
@POST("/profile/update")
Call<RegistrationResponse> updateProfile2(@Header(value = "X-AUTH-TOKEN") String toke, @Part(value = "json") RequestBody json);

问题:

请求体是空的,当它来到服务器时

【问题讨论】:

  • 你试过TypedFile吗?
  • @RethinavelPillai 在 Retrofit 2.0 中没有 TypedFile
  • retrofit:2.0.0-beta1 不支持 TypedFile =(
  • 可以发一下请求代码吗?
  • @Anderson C Silva 你的意思是这个 Call call = dataProvider.requestUpdateProfile2(token, new File(path));

标签: java android http retrofit multipartform-data


【解决方案1】:

更新

Uploading files with Retorfit 2 and Multipart

原始的、离题的答案

http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically 这是一篇很好的文章,其中包含发送多部分的代码。这对我有用。

MultipartUtility multipart = new MultipartUtility(requestURL, charset);

multipart.addHeaderField("User-Agent", "CodeJava");
multipart.addHeaderField("Test-Header", "Header-Value");

multipart.addFormField("description", "Cool Pictures");
multipart.addFormField("keywords", "Java,upload,Spring");

multipart.addFilePart("fileUpload", uploadFile1);
multipart.addFilePart("fileUpload", uploadFile2);

List<String> response = multipart.finish();

System.out.println("SERVER REPLIED:");

for (String line : response) {
    System.out.println(line);
}

【讨论】:

  • 但它没有使用 Retrofit 2.0.0-beta1。
  • 谢谢!但是我只需要Retrfil,版本是2.0.0 -beta1!
【解决方案2】:

首先,您是否尝试将 mediaType “application/json” 发送为 @Multpart,如果您想发送 multpartfile,那么您是否需要更改代码中的某些内容。

类似这样的:

@Multipart
    @POST("/profile/update")
    Call<RegistrationResponse> updateProfile2(
    @Header(value = "X-AUTH-TOKEN") String toke,
    @Part("myfile\"; filename=\"image.png\" ") RequestBody file);

并将调用方法更改为:

RequestBody file = RequestBody.create(MediaType.parse("multipart/form-data"), myFile);
        return apiService.updateProfile2(token, file);

【讨论】:

    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多