我正在使用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/