2013-06-26 47 views
0

晚上好。HttpClient post with Content-Disposition

通常我與POST請求一樣,name1=value1&name2=value2工作,我的代碼是

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("name1", "value1")); 
httppost.setEntity(new UrlEncodedFormEntity("name2","value2"); 

但現在我有帖子這樣

-----------------------------17911109517875 Content-Disposition: form-data; 
name="PERSON*1[F*2][2664]" value1 
-----------------------------17911109517875 Content-Disposition: form-data; 
name="PERSON*1[I*3][2776]" value2 
-----------------------------17911109517875 Content-Disposition: form-data; 
name="PERSON*1[O*4][2778]" value3 

所以,就我所知,我應該做

nameValuePairs.add(new BasicNameValuePair("PERSON*1[F*2][2664]", "value1")); 

但是什麼與內容配置?

謝謝。

回答

1

你需要利用HttpClient的HttpMime支持。這不包括開箱即用的Android,因此您必須將其與應用程序捆綁在一起。

一個例子,根據您的文章可以如下實現:

MultipartEntity mpe= new MultipartEntity(); 
    FormBodyPart part1= new FormBodyPart("PERSON*1[F*2][2664]", new StringBody("value1")); 
    FormBodyPart part2= new FormBodyPart("PERSON*1[I*3][2776]", new StringBody("value2")); 
    FormBodyPart part3= new FormBodyPart("PERSON*1[O*4][2778]", new StringBody("value3")); 
    mpe.addPart(part1); 
    mpe.addPart(part2); 
    mpe.addPart(part3); 

以上輸出到一個流的一個例子是如下:

--ZV5t1WLAh04TJTqjyBJBSDL3M69xu0A 
Content-Disposition: form-data; name="PERSON*1[F*2][2664]" 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 8bit 

value1 
--ZV5t1WLAh04TJTqjyBJBSDL3M69xu0A 
Content-Disposition: form-data; name="PERSON*1[I*3][2776]" 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 8bit 

value2 
--ZV5t1WLAh04TJTqjyBJBSDL3M69xu0A 
Content-Disposition: form-data; name="PERSON*1[O*4][2778]" 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 8bit 

value3 
--ZV5t1WLAh04TJTqjyBJBSDL3M69xu0A-- 

我相信該庫或多或少是獨立的,可以從httpclient網站上獲取。

+0

你依賴哪個依賴? –

+0

http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22httpmime%22 –