欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

httpclient,URL

程序员文章站 2022-07-15 14:22:51
...

网上介绍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;
}
}