[简单日记]服务层通用post请求

来源:互联网 发布:孙鑫java视频教程 编辑:程序博客网 时间:2024/05/22 06:33
/**
* 使用post请求
* @param obj 请求参数对象
* @param httpUrl 请求URL地址
* @return 请求网关的返回值
* @throws Exception
*/
private String executePost(Object obj, String httpUrl) throws Exception {
String result = "";
Class cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
//设置请求参数
String fieldName = null;
String fieldNameUpper = null;
Method getMethod = null;
String value = null;
for (int i = 0; i < fields.length; i++) {//循环设置请求参数
fieldName = fields[i].getName();
fieldNameUpper = Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1);
getMethod = cls.getMethod("get" + fieldNameUpper);//通过反射获取get方法
value = (String) getMethod.invoke(obj);//通过反射调用get方法
if(value != null) {//请求参数值不为空,才设置
params.add(new BasicNameValuePair(fieldName, value));
}
}
HttpPost httppost = new HttpPost(httpUrl);//设置HttpPost
httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); // 设置参数的编码UTF-8
HttpClient httpclient = new DefaultHttpClient();//创建HttpClient
HttpEntity entity = httpclient.execute(httppost).getEntity();//Http请求网关
if(entity != null&& entity.getContentLength() >0) {//返回值不为空,且长度大于0
result=EntityUtils.toString(entity);//将返回值转换成字符串
}//处理返回结果
httpclient.getConnectionManager().shutdown();//关闭连接
r eturn result;//返回返回值
}
原创粉丝点击