您的位置:首页 > 理论基础 > 计算机网络

HttpClient与HttpClient参数paras

2014-01-02 10:49 162 查看
import java.beans.PropertyDescriptor;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;

/**
*
* @param sysid
* @param ip
* @param commuInfo
* @return
* 获得HttpClient参数paras
*/
public static NameValuePair[] getValuePair(String sysid,String ip,CommuVo commuInfo){
NameValuePair[] paras = null ;
try {
Class<? extends CommuVo> cla=commuInfo.getClass();
Field[] field=cla.getDeclaredFields();
int size=field.length;
paras=new NameValuePair[size+2];
paras[0] = new NameValuePair("sysid", sysid);
paras[1] = new NameValuePair("ip", ip);
int i=2;
for(Field f :field){
String name=f.getName();
PropertyDescriptor pd = new PropertyDescriptor(name,cla);
Method getMethod = pd.getReadMethod();//获得get方法

Object obj = getMethod.invoke(commuInfo);//执行get方法返回一个Object
String value=obj!=null ? obj.toString() : "";
System.out.println("name————————value  :   "+name+"————"+value);
paras[i] = new NameValuePair(name, value);
i++;
}
} catch (Exception e) {
e.printStackTrace();
}
return paras;
}

/**
* 公共方法
* post http 请求,接受返回的结果xml文档
* @param url webservice地址
* @param paras 传递的参数
* @return Document 对象
*/
public static Document postHttp(String url, NameValuePair[] parasInput) {
Document doc = null;
PostMethod postMethod = new PostMethod(url);
try {
//重新构造参数数组,是为了加入公共参数:随机数,以防缓存影响执行结果
NameValuePair[] paras = null;
if(parasInput!=null){
paras =	new NameValuePair[parasInput.length+1];
paras[0] = new NameValuePair("httpRand",""+new Date().getTime());
for (int i = 0; i < parasInput.length; i++) {
paras[i+1] = parasInput[i];
}
}

if(showLog){printLog(paras);}//打印所传递的参数,以便调试

HttpClient client = new HttpClient();
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");

postMethod.setRequestBody(paras);//绑定参数
int statusCode = client.executeMethod(postMethod);
if (statusCode == HttpStatus.SC_OK) {//如果执行成功
//				System.out.println(postMethod.getResponseBodyAsString());

InputStream inputStream = postMethod.getResponseBodyAsStream();
doc = (new SAXReader()).read(inputStream);
inputStream.close();
} else {

}
} catch (Exception e) {
e.printStackTrace();
}finally {
postMethod.releaseConnection();//释放连接
}
return doc;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: