如何使用Android和Retrofit在服务器上上传图片?

时间:2019-05-27 16:52:29

标签: java android kotlin retrofit

我正在尝试使用Retrofit在服务器中上传图片,但是出现HTTP 400错误。我知道此错误意味着呼叫未正确完成,但是我不知道何时做错了。我只需要上传一张图片。

我尝试添加标头multipart / form-data以及content-type:image / jpeg,也没有添加标头,但它总是抛出400错误。

界面中的此代码:

@Multipart
@POST("https://myweb.com/endpoint")
Observable<DefaultResponse> uploadUserImageRx(
    @Part MultipartBody.Part image
);

这里是电话:

var file = // initialized file here

var filePart = MultipartBody.Part.createFormData("file",file.getName(),   RequestBody.create(MediaType.parse("image/jpeg"), file))

unsubscribeUploadPhoto()
uploadPhotoSubscription = MyApiClient.getApi()
    .uploadUserImageRx(filePart)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(object : SubscriberAdapter<DefaultResponse>() 
        {
          //Notify everything went well.
        })

我希望照片可以上传,但是却出现此错误。

端点的要求是:

授权(标题)为字符串

1 个答案:

答案 0 :(得分:0)

此错误表示您没有正确连接标头,因为我认为应该有一个标头,如访问令牌。检查是否有类似的东西,然后像下面那样实现您的API。

@Multipart
@POST("https://myweb.com/endpoint")
Observable<DefaultResponse> uploadUserImageRx(
    @Header("Authorization") String authorization,  
    @Part MultipartBody.Part image
);