【问题标题】:Upload file to server using retrofit使用改造将文件上传到服务器
【发布时间】:2018-10-10 08:52:21
【问题描述】:

如果对服务器的请求如图所示,如何从改造 android 发出请求。

【问题讨论】:

  • 到目前为止你试过了吗?您可以通过改造轻松上传图片、视频。
  • 到目前为止你尝试过什么?你有没有在询问之前尝试过搜索?你必须这样做,你知道的,对吧?
  • @Multipart @POST("upload-evidence") Call<UploadEvidenceResponse> uploadEvidence(@Header("token") String token, @Part("order_id") RequestBody order_id, @Part MultipartBody.Part file); 上面的代码是接口声明中的请求,但是我得到了响应:需要字段 evedence_img[]。

标签: android retrofit


【解决方案1】:

好吧,你可以在发帖前搜索一下,很确定你已经找到了一些东西,但是..

@Multipart
@POST(RestClient.UPDATE_USER_PICTURE)
Call<BooleanResponse> updateUserPicture(@Part MultipartBody.Part picture, @Part("picture") RequestBody file);

以上部分是你将使用的改造接口方法

RequestBody reqFile = RequestBody.create(MediaType.parse("multipart/form-data"), loadImageFile);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("picture", loadImageFile.getName(), reqFile);
RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), loadImageFile.getName());

RestClient.getApi().updateUserPicture(filePart, filename).enqueue(new Callback<BooleanResponse>() {
        @Override
        public void onResponse(Call<BooleanResponse> call, Response<BooleanResponse> response) {
            if (response.isSuccessful() && response.code() == 200){
                Toast.makeText(CompleteProfile.this, "Picture updated successfully!", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<BooleanResponse> call, Throwable t) {
            Toast.makeText(CompleteProfile.this, "Request failed !" + t.getMessage(), Toast.LENGTH_SHORT).show();
            Log.e(TAG, "-=onFailure=-\n" + t.getMessage(), t);
        }
    });

【讨论】:

  • 我使用的是form-urlencoded,如果我使用multipart,回复说:field evidence_img[] 是必需的。
猜你喜欢
  • 2021-07-21
  • 2017-11-25
  • 2013-12-28
  • 2018-10-05
  • 2018-01-23
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 2016-09-07
相关资源
最近更新 更多