`

httpclient,URL

阅读更多

网上介绍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;
}
}
1
0
分享到:
评论

相关推荐

    httpclient方式调用url

    本篇文章将深入探讨如何使用HttpClient方式调用URL,以及相关的知识点。 首先,HttpClient允许我们构建复杂的HTTP请求,包括GET、POST以及其他HTTP方法。使用HttpClient调用URL的基本步骤包括创建HttpClient实例、...

    java使用HttpClient通过url下载文件到本地

    在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到本地。以下是对这个主题的详细阐述: 1. **HttpClient介绍**: HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级...

    c#实现HttpClient拼接multipart/form-data形式参数post提交数据

    使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,

    网络编程 系统互相传数据 公共类 httpclien url

    本主题聚焦于“网络编程 系统互相传数据 公共类 httpclient url”,这意味着我们将探讨如何利用HTTP客户端库(如Apache HttpClient)以及URL(统一资源定位符)进行网络通信。 首先,URL是Web上的资源定位标准,它...

    httpClient和URLConnection的区别

    1. 获取URL对象并打开连接。 2. 设置HTTP方法(GET或POST)。 3. 设置请求属性,如超时、连接类型等。 4. 发送请求数据(如果需要)。 5. 读取响应。 HttpClient在处理网络异常、超时和多线程方面更强大。对于异常...

    commons-httpclient-3.1jar包下载

    ...httpclient.HttpURL org.apache.commons.httpclient....

    httpClient

    HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod ...

    HttpClient 调用WebService示例

    HttpClient是Apache基金会开发的一个HTTP客户端库,广泛应用于Java开发者中,用于执行HTTP...对于RESTful API,使用HttpClient则更为简单,只需构造合适的URL和请求体,然后按照HTTP方法(如GET、POST)进行操作即可。

    HttpClient重新封装的HttpClient类

    var response = await httpClient.GetAsync(url); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } } ``` 然而,这个基础版本的`HttpClient`存在一些问题,如资源...

    httpclient

    你可以设置URL、添加请求头、设置请求体等。例如,创建一个POST请求: ```java HttpPost httpPost = new HttpPost("http://example.com"); List&lt;NameValuePair&gt; params = new ArrayList(); params.add(new ...

    Java HttpClient 全部的jar包

    在HttpClient中,这个库用于处理URL编码和解码,以及在HTTP请求头或参数中可能涉及到的其他编码问题。 3. `commons-collections-3.2.jar`: Apache Commons Collections提供了对Java集合框架的扩展和增强,包括集合...

    HttpClient接口调用工具类(附带demo)

    只需提供URL作为构造函数的参数,然后同样通过`HttpClient`的`execute`方法执行请求。 3. **Put请求**: Put请求常用于更新已有资源。在HttpClient中,使用`HttpPut`类创建PUT请求,设置请求URL,然后将要更新的...

    Arduino HttpClient 库文件

    这个头文件定义了 `HttpClient` 类,该类封装了 HTTP 请求的相关操作,如设置 URL、POST 参数、请求方法(GET 或 POST)等,并提供了发送请求和处理响应的方法。 `HttpClient.cpp` 文件是实现文件,它实现了 `...

    httpclient4.3工具类

    在实际使用`httpclientUtils`时,开发者可以通过调用工具类提供的方法,如`sendGetRequest(String url)`、`sendPostRequest(String url, Map, String&gt; params)`等,轻松地发起HTTP请求并获取响应。这些方法通常会...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    3. **设置请求参数**:在HttpMethod对象上添加请求头、URL参数或者POST请求的实体内容。 4. **执行请求**:通过HttpClient的execute方法执行请求,并得到HttpResponse。 5. **处理响应**:从HttpResponse中获取...

    httpClient实例httpClient调用 http/https实例 忽略SSL验证

    在实际应用中,你需要根据你的需求替换URL,并确保在生产环境中恢复SSL验证,以保证安全。 总结来说,HttpClient提供了一个强大而灵活的接口来处理HTTP请求,而忽略SSL验证的配置则允许我们在非生产环境中快速地...

    JAVA httpclient jar下载

    httpclient常用封装工具 doGet(String url, Map, String&gt; param) doPost(String url, Map, String&gt; param) doPostJson(String url, String json)

    Httpclient依赖包

    1. **请求构造与执行**:HttpClient允许开发者精确控制HTTP请求的每一个细节,如方法类型(GET、POST等)、URL、请求头、实体内容等。同时,它支持异步和同步两种请求执行模式,以适应不同的性能需求。 2. **连接...

Global site tag (gtag.js) - Google Analytics