网上介绍java,httpclients使用比较多,大多是比较老板本,或是感觉不完善,或是不安全的,于是借鉴并整理了简单的工具类,好,先给出官方httpclient api,代码如下:
import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /** * Created by on 2017/2/16. * httpclien version 4.4.1 */ public class HttpClientUtil { private static PoolingHttpClientConnectionManager cm = null; private static int POOL_MAX_CON = 50;// 整个连接池最大连接数 private static int MAX_PERROUTE = 5;// 每路由最大连接数,默认值是2 private static String CHARSET = "UTF-8"; private HttpClientUtil() { } /** * 初始化连接池 */ private static void init() { if (cm == null) { synchronized (HttpClientUtil.class) { if (cm == null) { cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(POOL_MAX_CON); cm.setDefaultMaxPerRoute(MAX_PERROUTE); } } } } /** * get请求 */ public static String get(String url) { HttpGet httpGet = new HttpGet(url); return handleResult(httpGet); } /** * 带有参数get请求 */ public static String getByParameter(String url, Map<String, Object> params) throws URISyntaxException { URIBuilder ub = new URIBuilder().setPath(url).setParameters(wrapParameter(params)); HttpGet httpGet = new HttpGet(ub.build()); return handleResult(httpGet); } /** * post请求 */ public static String post(String url) { HttpPost httpPost = new HttpPost(url); return handleResult(httpPost); } /** * 带有参数post请求 */ public static String postByParameter(String url, Map<String, Object> params) throws UnsupportedEncodingException { HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(wrapParameter(params), CHARSET)); return handleResult(httpPost); } /** * 处理请求参数 */ private static ArrayList<NameValuePair> wrapParameter(Map<String, Object> params) { ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>(); if (params != null) { for (Map.Entry<String, Object> param : params.entrySet()) { pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue()))); } } return pairs; } /** * 获取httpclient */ private static CloseableHttpClient getHttpClient() { init(); // HttpClientBuilder hcb = HttpClients.custom(); // HttpClientBuilder hcbui = HttpClientBuilder.create(); return HttpClients.custom().setConnectionManager(cm).build(); } /** * 处理请求结果,返回json字符串 */ private static String handleResult(HttpRequestBase request) { String result = null; CloseableHttpClient httpClient = getHttpClient(); CloseableHttpResponse response = null; try { response = httpClient.execute(request); HttpEntity entity = response.getEntity(); if (entity != null) { result = EntityUtils.toString(entity, CHARSET); } } catch (IOException e) { e.printStackTrace(); } finally { if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public static void main(String[] args) throws IOException, URISyntaxException { Map<String, Object> map = new HashMap<String, Object>(); String url = "http://172.16.50.54/machine/machineApi"; map.put("method", "findOrderByMobileAndCode"); map.put("mobile", "18600409520"); map.put("checkCode", "123456"); String str = getByParameter(url, map); System.out.println(str); } } // 附带校验URL有效工具类
package common; import java.net.HttpURLConnection; import java.net.URL; /** * Created by on 2017/2/16. */ public class URLValidUtil { /** * 校验url是否可用 * * @param url 请求URL * @param reTryCount 连接次数 */ public boolean validUrl(String url, Integer reTryCount) { URL Url = null; HttpURLConnection con = null; int counts = 0; boolean result = false; if (url == null || url.length() <= 0) return result; if (reTryCount == null || reTryCount <= 0) reTryCount = 1; try { Url = new URL(url); while (counts < reTryCount) { con = (HttpURLConnection) Url.openConnection(); int code = con.getResponseCode(); if (code == 200) { result = true; break; } } } catch (Exception e) { e.printStackTrace(); } finally { if (con != null) con.disconnect(); if (Url != null) Url = null; } return result; } }
相关推荐
本篇文章将深入探讨如何使用HttpClient方式调用URL,以及相关的知识点。 首先,HttpClient允许我们构建复杂的HTTP请求,包括GET、POST以及其他HTTP方法。使用HttpClient调用URL的基本步骤包括创建HttpClient实例、...
在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到本地。以下是对这个主题的详细阐述: 1. **HttpClient介绍**: HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级...
使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,
本主题聚焦于“网络编程 系统互相传数据 公共类 httpclient url”,这意味着我们将探讨如何利用HTTP客户端库(如Apache HttpClient)以及URL(统一资源定位符)进行网络通信。 首先,URL是Web上的资源定位标准,它...
1. 获取URL对象并打开连接。 2. 设置HTTP方法(GET或POST)。 3. 设置请求属性,如超时、连接类型等。 4. 发送请求数据(如果需要)。 5. 读取响应。 HttpClient在处理网络异常、超时和多线程方面更强大。对于异常...
...httpclient.HttpURL org.apache.commons.httpclient....
HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod ...
HttpClient是Apache基金会开发的一个HTTP客户端库,广泛应用于Java开发者中,用于执行HTTP...对于RESTful API,使用HttpClient则更为简单,只需构造合适的URL和请求体,然后按照HTTP方法(如GET、POST)进行操作即可。
var response = await httpClient.GetAsync(url); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } } ``` 然而,这个基础版本的`HttpClient`存在一些问题,如资源...
你可以设置URL、添加请求头、设置请求体等。例如,创建一个POST请求: ```java HttpPost httpPost = new HttpPost("http://example.com"); List<NameValuePair> params = new ArrayList(); params.add(new ...
在HttpClient中,这个库用于处理URL编码和解码,以及在HTTP请求头或参数中可能涉及到的其他编码问题。 3. `commons-collections-3.2.jar`: Apache Commons Collections提供了对Java集合框架的扩展和增强,包括集合...
只需提供URL作为构造函数的参数,然后同样通过`HttpClient`的`execute`方法执行请求。 3. **Put请求**: Put请求常用于更新已有资源。在HttpClient中,使用`HttpPut`类创建PUT请求,设置请求URL,然后将要更新的...
这个头文件定义了 `HttpClient` 类,该类封装了 HTTP 请求的相关操作,如设置 URL、POST 参数、请求方法(GET 或 POST)等,并提供了发送请求和处理响应的方法。 `HttpClient.cpp` 文件是实现文件,它实现了 `...
在实际使用`httpclientUtils`时,开发者可以通过调用工具类提供的方法,如`sendGetRequest(String url)`、`sendPostRequest(String url, Map, String> params)`等,轻松地发起HTTP请求并获取响应。这些方法通常会...
3. **设置请求参数**:在HttpMethod对象上添加请求头、URL参数或者POST请求的实体内容。 4. **执行请求**:通过HttpClient的execute方法执行请求,并得到HttpResponse。 5. **处理响应**:从HttpResponse中获取...
在实际应用中,你需要根据你的需求替换URL,并确保在生产环境中恢复SSL验证,以保证安全。 总结来说,HttpClient提供了一个强大而灵活的接口来处理HTTP请求,而忽略SSL验证的配置则允许我们在非生产环境中快速地...
httpclient常用封装工具 doGet(String url, Map, String> param) doPost(String url, Map, String> param) doPostJson(String url, String json)
1. **请求构造与执行**:HttpClient允许开发者精确控制HTTP请求的每一个细节,如方法类型(GET、POST等)、URL、请求头、实体内容等。同时,它支持异步和同步两种请求执行模式,以适应不同的性能需求。 2. **连接...