2015-12-03 56 views
1

我正在使用OKHTTP並使用Multipart將映像發送到服務器。 我的代碼如下:將multipart與for循環一起使用

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多個項目,這就是爲什麼我使用的for循環。

但是,實際上只有最後一個項目被保存在服務器上,因爲requestBody在for循環中被覆蓋。

如何將所有項目添加到requestbody中發送?

+0

在for循環中,每次創建'requestBody'對象時,以及在調用'postRun()'之後。這就是爲什麼最後一項正在上傳到服務器。 –

+0

雅,多數民衆贊成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

感謝兄弟。在服務器上成功添加了所有項目。 –