带有Content-Disposition的HttpClient帖子

时间:2013-06-26 13:06:46

标签: android post apache-httpclient-4.x

晚上好。

通常我正在使用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 个答案:

答案 0 :(得分: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网站上检索。