【问题标题】:How can I access request MultipartBody information in new Callback<ResponseBody>?如何在 new Callback<ResponseBody> 中访问请求 MultipartBody 信息?
【发布时间】:2016-08-29 03:44:18
【问题描述】:

你好 Android 程序员。我被困在这个问题上。我需要从回调方法中检索循环迭代的文件名或索引。我正在使用 Retrofit 2.0。

我想我可以将信息作为表单字段传递到帖子中(即使服务器不需要它),然后在 onResponse() 方法内的 call.request.body() 中检索它。

如果我使用调试器,我可以看到数据。我看到了表格的两个部分。我想我可以在我的表单中添加另一部分来保存索引。但是,我不知道如何通过代码访问它。有谁知道这样做的最佳方法?我想确保在最后一次 onResponse 回调结束时已上传所有图像。

最初我想使用call.execute.body() 执行此操作,因为我已经有一个“请稍候对话框” 但这给了我一个异常,基本上是说我应该从异步任务内部调用该方法。

请忽略我将请求转换为 JSON 对象的尝试...

任何想法都有帮助,谢谢!

for (File f : theImages) {
    RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), f);
    MultipartBody.Part body = MultipartBody.Part.createFormData("file", "image.jpg", reqFile);
    RequestBody repId = RequestBody.create(MediaType.parse("text/plain"), String.valueOf(newExternalReportId));
    uploadCall = hazSnapApi.postImage(body, repId, 1L);
    uploadCall.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            ResponseBody rBody = response.body();
            RequestBody mRequest = call.request().body();
            try {
                String temp = call.request().toString();
                JSONObject bodyAsJson = new JSONObject(call.request().toString());
            } catch (JSONException e) {
                e.printStackTrace();
            }


        }
        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            t.printStackTrace();

        }
    });
}

【问题讨论】:

    标签: java android retrofit retrofit2


    【解决方案1】:

    我最终创建了一个创建改造调用的服务。这样我就可以做到call.execute.body()。 这是因为 Service 不在主线程上运行。

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      相关资源
      最近更新 更多