packagecn.com.ajava.util;importjava.io.File;importjava.io.Serializable;importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.Map;importjava.util.Map.Entry;importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.client.HttpClient;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.entity.ContentType;importorg.apache.http.entity.mime.MultipartEntityBuilder;importorg.apache.http.entity.mime.content.FileBody;importorg.apache.http.entity.mime.content.StringBody;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.util.EntityUtils;/*** HttpClient工具类
*
*@author曾繁添
*@version1.0*/
public classHttpClientUtil
{public final static String Method_POST = "POST";public final static String Method_GET = "GET";/*** multipart/form-data类型的表单提交
*
*@paramform
* 表单数据*/
public staticString submitForm(MultipartForm form)
{//返回字符串
String responseStr = "";//创建HttpClient实例
HttpClient httpClient = newDefaultHttpClient();try{//实例化提交请求
HttpPost httpPost = newHttpPost(form.getAction());//创建MultipartEntityBuilder
MultipartEntityBuilder entityBuilder =MultipartEntityBuilder.create();//追加普通表单字段
Map normalFieldMap =form.getNormalField();for (Iterator> iterator =normalFieldMap.entrySet().iterator(); iterator.hasNext();)
{
Entry entity =iterator.next();
entityBuilder.addPart(entity.getKey(),new StringBody(entity.getValue(), ContentType.create("text/plain", Consts.UTF_8)));
}//追加文件字段
Map fileFieldMap =form.getFileField();for (Iterator> iterator =fileFieldMap.entrySet().iterator(); iterator.hasNext();)
{
Entry entity =iterator.next();
entityBuilder.addPart(entity.getKey(),newFileBody(entity.getValue()));
}//设置请求实体
httpPost.setEntity(entityBuilder.build());//发送请求
HttpResponse response =httpClient.execute(httpPost);int statusCode =response.getStatusLine().getStatusCode();//取得响应数据
HttpEntity resEntity =response.getEntity();if (200 ==statusCode)
{if (resEntity != null)
{
responseStr=EntityUtils.toString(resEntity);
}
}
}catch(Exception e)
{
System.out.println("提交表单失败,原因:" +e.getMessage());
}finally{
httpClient.getConnectionManager().shutdown();
}returnresponseStr;
}/**表单字段Bean*/
public class MultipartForm implementsSerializable
{/**序列号*/
private static final long serialVersionUID = -2138044819190537198L;/**提交URL **/
private String action = "";/**提交方式:POST/GET **/
private String method = "POST";/**普通表单字段 **/
private Map normalField = new LinkedHashMap();/**文件字段 **/
private Map fileField = new LinkedHashMap();publicString getAction()
{returnaction;
}public voidsetAction(String action)
{this.action =action;
}publicString getMethod()
{returnmethod;
}public voidsetMethod(String method)
{this.method =method;
}public MapgetNormalField()
{returnnormalField;
}public void setNormalField(MapnormalField)
{this.normalField =normalField;
}public MapgetFileField()
{returnfileField;
}public void setFileField(MapfileField)
{this.fileField =fileField;
}public voidaddFileField(String key, File value)
{
fileField.put(key, value);
}public voidaddNormalField(String key, String value)
{
normalField.put(key, value);
}
}
}