Android 使用多部分for循环

Android 使用多部分for循环,android,multipart,okhttp,Android,Multipart,Okhttp,我使用OKHTTP和Multipart将图像发送到服务器。 我的代码如下: RequestBody requestBody = null; for (int i = 0; i < noOfItems; i++) { requestBody = new MultipartBuilder().type(MultipartBuilder.FORM) .addFormDataPart("func", "savepack

我使用OKHTTP和Multipart将图像发送到服务器。 我的代码如下:

RequestBody requestBody = null;
for (int i = 0; i < noOfItems; i++) {
                requestBody = new MultipartBuilder().type(MultipartBuilder.FORM)
                        .addFormDataPart("func", "savepacket")
                        .addFormDataPart("userid", String.valueOf(mLoginPref.getInt("userId", 1)))
                        .addFormDataPart("packname", strPackname)
                        .addFormDataPart("image", str + ".png", RequestBody.create(MediaType.parse("image/png"), imagePath))
                        .addFormDataPart("count", String.valueOf(noOfItems))
                        .addFormDataPart("item_name" + String.valueOf(i + 1), al.get(i).getStrItemName())
                        .addFormDataPart("tag_item" + String.valueOf(i + 1), al.get(i).getStrItemTag())
                        .addFormDataPart("note" + String.valueOf(i + 1), al.get(i).getStrComment())
                        .addFormDataPart("image" + String.valueOf(i + 1), al.get(i).getStrItemName() + ".png", RequestBody.create(MediaType.parse("image/png"), al.get(i).getStrItemImage()))
                        .build();
            }
            mstrQRResponse = HttpUtils.postRun("pack", requestBody);
RequestBody RequestBody=null;
for(int i=0;i
从代码中,(al是ArrayList)您可以看到,我必须使用单个Packname发送多个项目,这就是我使用for循环的原因

但,实际上只有最后一项保存在服务器上,因为requestBody在for循环中获得覆盖


如何通过将所有项目添加到requestbody来发送

试试这个,也许会对你有帮助

MultipartBuilder multipartBuilder = new MultipartBuilder().type(MultipartBuilder.FORM);
    RequestBody requestBody = null;
    for (int i = 0; i < noOfItems; i++) {
        multipartBuilder
                .addFormDataPart("func", "savepacket")
                .addFormDataPart("userid", String.valueOf(mLoginPref.getInt("userId", 1)))
                .addFormDataPart("packname", strPackname)
                .addFormDataPart("image", str + ".png", RequestBody.create(MediaType.parse("image/png"), imagePath))
                .addFormDataPart("count", String.valueOf(noOfItems))
                .addFormDataPart("item_name" + String.valueOf(i + 1), al.get(i).getStrItemName())
                .addFormDataPart("tag_item" + String.valueOf(i + 1), al.get(i).getStrItemTag())
                .addFormDataPart("note" + String.valueOf(i + 1), al.get(i).getStrComment())
                .addFormDataPart("image" + String.valueOf(i + 1), al.get(i).getStrItemName() + ".png", RequestBody.create(MediaType.parse("image/png"), al.get(i).getStrItemImage()));
    }
    requestBody = multipartBuilder.build();
    mstrQRResponse = HttpUtils.postRun("pack", requestBody);
MultipartBuilder MultipartBuilder=new MultipartBuilder().type(MultipartBuilder.FORM);
RequestBody RequestBody=null;
for(int i=0;i
在for循环内部,每次创建
requestBody的对象时,然后调用
postRun()
。这就是为什么最后一个项目正在上载到服务器。是的,这是ri8。。但是我怎么解决呢?谢谢兄弟。。已在服务器上成功添加所有项目。