2013-04-28 44 views
12

我試圖使一些使用MultipartEntity以下服務器POST請求:我目前使用類似是否可以在多部分POST中嵌套MultipartEntities或FormBodyPart?

parameters: {"parameter1"=>"parameter1", "parameter2"=>{"sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}} 

multipartEntity.addPart("parameter1", new StringBody("parameter1")); 

FormBodyPart parameter2 = new FormBodyPart("parameter2", new StringBody("")); // It wouldn't allow a null ContentBody 

parameter2.addField("sub_parameter1", "sub_parameter1"); 
parameter2.addField("sub_parameter2", "sub_parameter2"); 

然而,子域不攜帶,雖然。我剛剛得到:

parameters: {"parameter1"=>"parameter1", "parameter2"=>""} 

如何在MultipartEntity或其包含的FormBodyPart元素中創建嵌套結構?

+1

您是否最終找到了解決方案?我有同樣的問題。 – scientiffic 2013-07-01 17:44:21

+0

我正在尋找類似的東西,但無法讓它工作 – 2014-05-18 16:14:59

回答

5

一旦你已經看到表單條目是如何通過HTTP連接傳輸的,你就會明白,不可能有與多形式請求以及url編碼請求嵌套的東西。

事情很簡單。多部分表單請求的格式爲:

--- content-boundary --- 
Content-Disposition: form-data; name="form_data_name" 

[content (skipped)] 
--- content-boundary --- 

就是這樣。有一系列格式的單一數據表單條目:[表單條目名稱] - > [表單條目內容],對於表單中的每個條目都重複。它不是遞歸的,因此可能沒有任何嵌套結構。

來源:

  1. 17.13.4 Form content types
  2. RFC 2045 Internet Message Bodies
+0

這是一個非常好的解決方案,並且,幾乎總結出'嵌套'不是多部分實體的單詞。謝謝! – sud007 2015-07-10 09:03:41

2

考慮在請求的主體中發送一個json。這樣你就可以發送你想要的東西。

2

事情是這樣的:

MultipartEntity reqEntity = new MultipartEntity(); 
reqEntity.addPart("selectedGroup", new StringBody(group)); 
reqEntity.addPart("selectedService", new StringBody(service.toString())); 
reqEntity.addPart("selectedTransformation", new StringBody(transformation.toString())); 
reqEntity.addPart("projectId", new StringBody(projectId.toString())); 

檢查這一環節exapmle 8。也exapmple 23 Example Site

希望這可以幫助你解決你的問題。

0

我也有類似的要求,我已經結束了在調整我的服務器端的代碼刪除參數2,爲了使用MultipartEntity在客戶端。它工作得很好。

parameters: {"parameter1"=>"parameter1", "parameter2"=>{"sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"}} 

parameters: {"parameter1"=>"parameter1", "sub_parameter1"=>"sub_parameter1", "sub_parameter2"=>"sub_parameter2"} 
相關問題