如何在新的回调<responsebody>中访问请求MultipartBody信息?

时间:2016-08-29 03:44:19

标签: java android retrofit retrofit2

Hello其他Android程序员。我坚持这个问题。我需要从回调方法中检索循环迭代的文件名或索引。我正在使用Retrofit 2.0。

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

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

最初我想使用call.execute.body()执行此操作,因为我已经有了#34;请等待对话框&#34; 但是这给了我一个Exception,主要是说我应该从asynctask里面调用这个方法。

请忽略我将请求转换为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();

        }
    });
}

1 个答案:

答案 0 :(得分:0)

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