2015-12-03 7 views
1

Я использую OKHTTP и использую Multipart для отправки изображения на сервер. Мой код выглядит следующим образом:Использование multipart with for loop

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); 

Как Из кода (АЛ ArrayList) Вы можете видеть, что я должен послать несколько элементов с одним Packname, вот почему я использую для цикла.

Но на самом деле только последний элемент сохраняется на сервере из-за requestBody получает переопределения внутри цикла.

Как все предметы будут отправлены, добавив его для запроса?

+0

Внутри для цикла, каждый раз, когда вы создаете объект 'requestBody', а после него вы вызываете' postRun() '. Вот почему последний элемент загружается на сервер. –

+0

ya, thats ri8 .. Но как я могу его решить? –

ответ

1

Попробуйте это, возможно, это поможет вам.

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); 
+0

Спасибо, брату. Добавлены все элементы на сервере. –