日常工作中,经常会遇到一些需要调用http协议接口的情况,下面整理一个用apache的httpclient访问http的工具类:
package com.hx.imweb.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.ClientPNames; import org.apache.http.client.params.CookiePolicy; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpConnectionParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; import com.hx.imweb.service.ConfigParamLoadService; /** * * httpclient访问http接口的工具类 * * @author minux * */ public class HttpClientUtils { public static final Logger logger = Logger.getLogger(HttpClientUtils.class); private static Map<String, String> headers = new HashMap<String, String>(); static { headers.put("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2)"); headers.put("Accept-Language", "zh-cn,zh;q=0.5"); headers.put("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7"); headers.put( "Accept", " image/gif, image/x-xbitmap, image/jpeg, " + "image/pjpeg, application/x-silverlight, application/vnd.ms-excel, " + "application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*"); headers.put("Content-Type", "application/x-www-form-urlencoded"); headers.put("Accept-Encoding", "gzip, deflate"); } /** * 异常或者没拿到返回结果的情况下,result为"" * * @param url * @param param * @return */ public static String httpPost(String url, Map<String, Object> param) { logger.info("httpPost URL [" + url + "] start "); DefaultHttpClient httpclient = null; HttpPost httpPost = null; HttpResponse response = null; HttpEntity entity = null; String result = ""; StringBuffer suf = new StringBuffer(); try { httpclient = new DefaultHttpClient(); // 设置cookie的兼容性---考虑是否需要 httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); httpPost = new HttpPost(url); // 设置各种头信息 for (Entry<String, String> entry : headers.entrySet()) { httpPost.setHeader(entry.getKey(), entry.getValue()); } List<NameValuePair> nvps = new ArrayList<NameValuePair>(); // 传入各种参数 if (null != param) { for (Entry<String, Object> set : param.entrySet()) { String key = set.getKey(); String value = set.getValue() == null ? "" : set.getValue() .toString(); nvps.add(new BasicNameValuePair(key, value)); suf.append(" [" + key + "-" + value + "] "); } } logger.info("param " + suf.toString()); httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); // 设置连接超时时间 HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), ConfigParamLoadService.httpConnectTimeOut); // 设置读数据超时时间 HttpConnectionParams.setSoTimeout(httpPost.getParams(), ConfigParamLoadService.httpReadtimeOut); response = httpclient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { logger.error("HttpStatus ERROR" + "Method failed: " + response.getStatusLine()); return ""; } else { entity = response.getEntity(); if (null != entity) { byte[] bytes = EntityUtils.toByteArray(entity); result = new String(bytes, "UTF-8"); } else { logger.error("httpPost URL [" + url + "],httpEntity is null."); } return result; } } catch (Exception e) { logger.error("httpPost URL [" + url + "] error, ", e); return ""; } finally { if (null != httpclient) { httpclient.getConnectionManager().shutdown(); } logger.info("RESULT: [" + result + "]"); logger.info("httpPost URL [" + url + "] end "); } } }
该工具方法接受2个参数:
url--服务端提供访问的url地址
param--需要带上的参数
返回结果为:服务端设置的返回字符串(当然也可以是形如json之类的格式结果)
用到的第三方jar有:
httpcore-4.2-beta1.jar
httpclient-4.2-beta1.jar
另外工具类中引入了一个自己编写的service类ConfigParamLoadService
在这里只是传入了两个常量时间值(毫秒单位的超时时间值)
// 设置连接超时时间 HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), ConfigParamLoadService.httpConnectTimeOut); // 设置读数据超时时间 HttpConnectionParams.setSoTimeout(httpPost.getParams(), ConfigParamLoadService.httpReadtimeOut);
jar包都可以到apache的官网下载
相关推荐
HttpClient接口调用工具类 (Post请求 get请求 put请求 delete请求 下载就可以用 )
HttpClient接口调用工具类 (Post请求 get请求 put请求 delete请求 (附带调用demo) 下载就可以用 ) 可设置httpclient的连接池大小,连接池最大并发连接数,单路由最大并发数设
该工具类是java 调用第三方接口时需要使用到的。HttpClientUtil 包含get和post方法。
在日常开发中我们经常需要调用http接口,一个httpclient工具类,返回的对象可以自己写一个。
下面小编就为大家带来一篇HttpClient实现调用外部项目接口工具类的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
http远程接口调用-httpClient+跳过SSL证书校验. 里面分别有3个httpClient的工具类代码。 还有一个专门为了跳过SSL证书校验的工具类。
该工具类使用httpclient进行http or https请求,包括requestbody格式和form表单格式,另外含文件服务器中转上传方法,几乎支持所有常用接口调用,内含详细注释和说明文件,含jar包,及maven方式引用,拿过去直接用吧
相信大家在调用rest webservice通常使用httpclient.该示例代码是使用httpconnection的形式,以POST和GET两种方式提交调用REST WebService。在项目中一直使用的工具类,分享给大家
搜了一下网络上别人封装的...所以也就萌生了自己封装HttpClient工具类的想法。要做就做最好的,本工具类支持插件式配置Header、插件式配置httpclient对象,这样就可以方便地自定义header信息、配置ssl、配置proxy等。
下载这个工具类,然后直接调用createHtmlPage方法就可以了。最关键一点是,网上的方法没有一个解决了乱码问题,费了我不少功夫。
httpclient get/post请求工具类(map参数封装),方便调用
本篇文章主要介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,具有一定的参考价值,有兴趣的可以了解一下
HTTP异步工具包(HttpClient实现) http://blog.csdn.net/lyl_studio/article/details/9319549
这是整合微信支付的工具类,其中有H5支付和小程序支付的工具类调用接口。还有配置文件。还有一个微信响应的controller接口,供接受支付返回的消息。
基本的方法都直接给出,直接调用即可。参数时间可以自己修改
其中包含项目post-demo定义接口;包含另一个项目httpclient-demo使用工具类发送post请求调用接口。详细内容查看博客 httpclient发送post请求
HttpClient远程调用工具类 get 和post 调用用访问别的系统接口 用http方式请求,包括调用时用的工具类
此工具类可以调用https和http协议的接口,想整合的自己可以合并下,我这里分别使用了两个方法来调用未合并在一起,其实合并在一起也可以,由于我这边的业务需求我只能分开成两个方法,此工具还可以细分细节切面,但是...
Java,通过 httpclient 获取 cookie 模拟登录 ,登录后携带cookie发起下一个请求
http协议基础工具类,该类提供了get,post功能调用方法