我正在使用Retrofit beta2,并且正在分段上传中挣扎。我已经尝试了指定here的代码。我可能在这里错过了一些东西。

public interface SendMediaApiService {
    @Multipart
    @POST(/api/v1/messages)
    Call<ApiResponse> upload(
            @Header("Authorization") String token,
            @Query("recipient_user_id") String userId,
            @Query("message") String message,
            @Part("name=\"photo\"; filename=\"selfie.jpg\" ") RequestBody file
    );
}

private void upload() {
    Retrofit retrofit = new Retrofit.Builder()
        // do some stuffs here


    File file = new File(filePath);
    RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
    Call<ApiResponse> call = service.upload(token, userId, msg, requestBody);

}


当我卷曲

$ curl -v \
> -H "Authorization: Bearer TOKEN" \
> -F "photo=@/path/to/my/image.jpg" \
> http://domain.com/api/v1/messages?recipient_user_id=USER_ID&message=test

最佳答案

小小的序言:我是链接的博客文章的合著者。

您的代码看起来大多不错。我们测试的代码与您的代码之间的一个小区别是@Part() RequestBody file声明。我们的代码未指定文件:

@Part("myfile\"; filename=\"image.png\" ") RequestBody file

另一方面,在您的代码中是:

@Part("name=\"photo\"; filename=\"selfie.jpg\" ") RequestBody file

我建议从声明中删除name=\"部分,然后重试。如果没有帮助,您的错误是什么?

关于android - Retrofit 2 beta2无法进行分段上传,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33495270/

10-12 04:48