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;
}
HttpClient与HttpClient参数paras
最新推荐文章于 2021-02-27 00:34:16 发布