返回顶部
首页 > 资讯 > 精选 >java的http请求工具类HttpClientUtils怎么使用
  • 453
分享到

java的http请求工具类HttpClientUtils怎么使用

2023-06-19 10:06:59 453人浏览 薄情痞子
摘要

本篇内容主要讲解“java的Http请求工具类HttpClientUtils怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java的http请求工具类HttpClientUtils怎么使

本篇内容主要讲解“java的Http请求工具类HttpClientUtils怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java的http请求工具类HttpClientUtils怎么使用”吧!

import com.alibaba.fastJSON.jsON;import com.alibaba.fastjson.JSONObject;import org.apache.commons.collections.MapUtils;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.httpstatus;import org.apache.http.NameValuePair;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFORMEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpRequestBase;import org.apache.http.config.ReGIStry;import org.apache.http.config.RegistryBuilder;import org.apache.http.conn.HttpClientConnectionManager;import org.apache.http.conn.Socket.ConnectionSocketFactory;import org.apache.http.conn.ssl.AllowAllHostnameVerifier;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.conn.ssl.SSLContexts;import org.apache.http.conn.ssl.X509HostnameVerifier;import org.apache.http.entity.StringEntity;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 org.springframework.util.CollectionUtils;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.SocketTimeoutException;import java.net.URLEncoder;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;public class HttpClientUtils {    private static Log logger = LogFactory.getLog(HttpClientUtils.class);    private static PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();    private static CloseableHttpClient httpClient = null;    private static final int DEFAULT_MAX_TOTAL_CONNECTION = 1024;    private static final int DEFAULT_MAX_PER_ROUTE = 300;    private static final String DEFAULT_ENCODING = "UTF-8"; // 默认的查询参数及返回结果的字符串编码    private static final String CONTENT_TYPE_TEXT_XML = "application/xml"; // 默认的查询参数及返回结果的字符串编码    private static final String APPLICATION_XML = "text/xml"; // 默认的查询参数及返回结果的字符串编码    private static final int DEFAULT_CONNECTION_TIME_OUT = 60000; // 默认连接超时时间,    // 60秒    private static final int DEFAULT_READ_TIME_OUT = 200000; // 默认响应超时时间, 60秒    public static JSONObject custRespHeader = new JSONObject();    static {        poolingHttpClientConnectionManager.setMaxTotal(DEFAULT_MAX_TOTAL_CONNECTION);        poolingHttpClientConnectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_PER_ROUTE);        httpClient = HttpClients.custom().setConnectionManager(poolingHttpClientConnectionManager).build();    }    private HttpClientUtils() {    }        public static String invokeGet(String url, Map<String, String> params, String encode, int connectTimeout,                                   int readTimeout) {        if (connectTimeout <= 0) {            return null;        }        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(readTimeout)                .setConnectTimeout(connectTimeout).setConnectionRequestTimeout(connectTimeout).build();        String responseString;        String requestUrl;        try {            requestUrl = buildRequestUrl(url, params);        } catch (UnsupportedEncodingException e) {            logger.error("encode http get params error, params is " + params, e);            return "";        }        HttpPost httpGet = new HttpPost(requestUrl);        httpGet.setHeader("Connection", "close");        httpGet.setConfig(requestConfig);        responseString = doRequest(httpGet, encode);        return responseString;    }        public static String invokePost(String requestUrl, Map<String, Object> params) {        return invokePost(requestUrl, params, null, null, DEFAULT_ENCODING, DEFAULT_CONNECTION_TIME_OUT,                DEFAULT_READ_TIME_OUT);    }    public static String invokePost(String requestUrl, Map<String, Object> params,Map<String, String> requestHeader) {        return invokePost(requestUrl, params, requestHeader, null, DEFAULT_ENCODING, DEFAULT_CONNECTION_TIME_OUT,                DEFAULT_READ_TIME_OUT);    }        public static String invokePost(String requestUrl, Map<String, String> requestHeader, String requestBody) {        return invokePost(requestUrl, null, requestHeader, requestBody, DEFAULT_ENCODING, DEFAULT_CONNECTION_TIME_OUT,                DEFAULT_READ_TIME_OUT);    }        public static String invokePost(String requestUrl, Map<String, Object> params, Map<String, String> requestHeader,                                    String requestBody, String encode, int connectTimeout, int readTimeout) {        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(readTimeout)                .setConnectTimeout(connectTimeout).setConnectionRequestTimeout(connectTimeout).build();        String responseString;        HttpPost httpPost = new HttpPost(requestUrl);        httpPost.setConfig(requestConfig);        if (MapUtils.isNotEmpty(requestHeader)) {            for (Map.Entry<String, String> entry : requestHeader.entrySet()) {                httpPost.addHeader(entry.geTKEy(), entry.getValue());            }        }        buildPostParams(httpPost, params, requestBody, encode);        responseString = doRequest(httpPost, encode);        return responseString;    }        private static void buildPostParams(HttpPost httpPost, Map<String, Object> params, String requestBody,                                        String encode) {        try {            if (MapUtils.isNotEmpty(params)) {                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();                for (Map.Entry<String, Object> entry : params.entrySet()) {                    String value = null;                    if (entry.getValue() instanceof String) {                        value = (String) entry.getValue();                    } else {                        value = JSON.toJSONString(entry.getValue());                    }                    nameValuePairs.add(new BasicNameValuePair(entry.getKey(), value));                }                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, encode));            }            if (StringUtils.isNotBlank(requestBody)) {                httpPost.setEntity(new StringEntity(requestBody, encode));            }        } catch (UnsupportedEncodingException e) {            logger.error("HttpClientUtils.buildPostParams error, params = " + params, e);        }    }        private static String doRequest(HttpRequestBase httpRequestBase, String encode) {        String responseString = null;        try {            long start = System.currentTimeMillis();            CloseableHttpResponse response = httpClient.execute(httpRequestBase);            logger.info("HttpClientUtils Begin Invoke: " + httpRequestBase.getURI() + ", cost time "                    + (System.currentTimeMillis() - start) + " ms");            try {                Header[] headers = response.getHeaders("isLogin");                if(headers!=null && headers.length>0){                    custRespHeader.put(headers[0].getName(),headers[0].getValue());                }                HttpEntity entity = response.getEntity();                try {                    if (entity != null) {                        responseString = EntityUtils.toString(entity, encode);                    }                } finally {                    if (entity != null) {                        entity.getContent().close();                    }                }            } catch (Exception e) {                e.printStackTrace();                logger.error(String.format("[HttpClientUtils.doRequest] get response error, url:%s",                        httpRequestBase.getURI()), e);                responseString = "";            } finally {                if (response != null) {                    response.close();                }            }        } catch (SocketTimeoutException e) {            e.printStackTrace();            logger.error(String.format("[HttpClientUtils.doRequest] invoke get timout error, url:%s",                    httpRequestBase.getURI()), e);            responseString = "";        } catch (Exception e) {            e.printStackTrace();            logger.error(                    String.format("[HttpClientUtils.doRequest] invoke get error, url:%s", httpRequestBase.getURI()), e);            responseString = "";        } finally {            httpRequestBase.releaseConnection();        }        logger.info("HttpClientUtils response : " + responseString);        return responseString;    }        private static String buildRequestUrl(String url, Map<String, String> params) throws UnsupportedEncodingException {        if (CollectionUtils.isEmpty(params)) {            return url;        }        StringBuilder requestUrl = new StringBuilder();        requestUrl.append(url);        int i = 0;        for (Map.Entry<String, String> entry : params.entrySet()) {            if (i == 0) {                requestUrl.append("?");            }            requestUrl.append(entry.getKey());            requestUrl.append("=");            String value = entry.getValue();            requestUrl.append(URLEncoder.encode(value, "UTF-8"));            requestUrl.append("&");            i++;        }        requestUrl.deleteCharAt(requestUrl.length() - 1);        return requestUrl.toString();    }    public static void setStringParams(HttpPost httpost,                                       Map<String, String> params) {        List<NameValuePair> nvps = new ArrayList<NameValuePair>();        Set<String> keySet = params.keySet();        for (String key : keySet) {            nvps.add(new BasicNameValuePair(key, params.get(key).toString()));        }        try {            httpost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));        } catch (UnsupportedEncodingException e) {        }    }        private static String sendRequest(HttpRequestBase httpRequest, HttpEntity entity) {        httpRequest.setHeader("User-Agent", "okHttp");        if (httpRequest instanceof HttpEntityEnclosingRequestBase) {//            checkArgument(null!=entity,"HttpEntity请求体不能为空");            ((HttpEntityEnclosingRequestBase) httpRequest).setEntity(entity);        }        //忽略证书        SSLContext sslContext = SSLContexts.createDefault();        X509TrustManager tm = new X509TrustManager() {            public void checkClientTrusted(X509Certificate[] xcs,                                           String string) throws CertificateException {            }            public void checkServerTrusted(X509Certificate[] xcs,                                           String string) throws CertificateException {            }            public X509Certificate[] getAcceptedIssuers() {                return null;            }        };        try {            sslContext.init(null, new TrustManager[]{tm}, null);        } catch (Exception ex) {            ex.printStackTrace();        }        X509HostnameVerifier hostnameVerifier = new AllowAllHostnameVerifier();        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);        Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create()                .register("https", sslsf)                .build();        HttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(r);        CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();        CloseableHttpResponse response = null;        String resString = null;        try {            response = httpClient.execute(httpRequest);            HttpEntity resEntity = response.getEntity();            int statusCode = response.getStatusLine().getStatusCode();            resString = EntityUtils.toString(resEntity, "UTF-8");            System.err.println(statusCode);            if (statusCode != HttpStatus.SC_OK) {                System.out.println("响应码状态不是200");            }            return resString;        } catch (Exception e) {            throw new RuntimeException(resString, e);        } finally {            try {                if (response != null) {                    response.close();                }                if (httpRequest != null) {                    httpRequest.releaseConnection();                }                if (httpClient != null) {                    httpClient.close();                }            } catch (IOException e) {                throw new RuntimeException(e);            }        }    }}

调用示例:

public static void delAll(){        String url = path+"test/test/deleteAll";        Map map = new HashMap<>();        String str = HttpClientUtils.invokePost(url,map);        System.out.println("delAll.str="+str);    }

到此,相信大家对“java的http请求工具类HttpClientUtils怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: java的http请求工具类HttpClientUtils怎么使用

本文链接: https://lsjlt.com/news/295446.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java的http请求工具类HttpClientUtils怎么使用
    本篇内容主要讲解“java的http请求工具类HttpClientUtils怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java的http请求工具类HttpClientUtils怎么使...
    99+
    2023-06-19
  • Android封装的http请求实用工具类
    代码如下:import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL...
    99+
    2022-06-06
    工具类 HTTP 工具 http请求 Android
  • Java请求Http接口-OkHttp(超详细-附带工具类)
    简介:OkHttp是一个默认有效的HTTP客户端,有效地执行HTTP可以加快您的负载并节省带宽,如果您的服务有多个IP地址,如果第一次连接失败,OkHttp将尝试备用地址。这对于IPv4 + IPv6...
    99+
    2023-09-28
    java http okhttp
  • Idea中HTTP Client请求测试工具怎么用
    这篇文章主要介绍了Idea中HTTP Client请求测试工具怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。正文:使用HTTP Client的Idea版本最好在2018...
    99+
    2023-06-15
  • Java请求Http接口-hutool的HttpUtil(超详细-附带工具类)
    概述 HttpUtil是应对简单场景下Http请求的工具类封装,此工具封装了HttpRequest对象常用操作,可以保证在一个方法之内完成Http请求。 此模块基于JDK的HttpUrlConnect...
    99+
    2023-09-04
    java http 开发语言
  • 详解Idea中HTTP Client请求测试工具的使用
    前言: 以前在本地测试一些接口,我都是使用postman,偶然发了Idea自带的请求测试工具HTTP Client,我就开始使用HTTP Client了,但是在某些下载流类接口的测试...
    99+
    2024-04-02
  • Java使用HttpUtils怎么实现发送HTTP请求
    本篇文章和大家了解一下Java使用HttpUtils怎么实现发送HTTP请求。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录第一部分:简单总结HTTP请求常用配置第二部分:使用JavaLib的HttpUtils第三部分...
    99+
    2023-07-06
  • Java工具类RelativeDateFormat怎么使用
    要使用Java工具类RelativeDateFormat,您可以按照以下步骤进行操作:1. 下载RelativeDateFormat...
    99+
    2023-10-20
    Java
  • 使用Java发起http请求的流程
    使用Java发起http请求的流程?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、GET与POSTGET和POST是HTTP的两个常用方法。GET指从指定的服...
    99+
    2023-06-06
  • 使用hutool工具发送post请求
     import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; import cn.huto...
    99+
    2023-09-08
    json java 前端
  • 怎么使用Java工具类库hutool
    本篇内容介绍了“怎么使用Java工具类库hutool”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介Hutool是Hu + tool的自造...
    99+
    2023-06-16
  • HTTP工具包HTTPie怎么使用
    本文小编为大家详细介绍“HTTP工具包HTTPie怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTTP工具包HTTPie怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。HTTPie是命令行客户端...
    99+
    2023-06-27
  • http请求怎么在spring boot中使用
    今天就跟大家聊聊有关http请求怎么在spring boot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先是经过封装:一:初始化httpclientprivate ...
    99+
    2023-05-30
    springboot http
  • Hutool Java工具类库_ExcelUtil怎么使用
    这篇文章主要介绍“Hutool Java工具类库_ExcelUtil怎么使用”,在日常操作中,相信很多人在Hutool Java工具类库_ExcelUtil怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-06-21
  • Java中RedisUtils工具类的使用
    目录前言一.pom.xml引入所需依赖二.RedisUtils工具类三.如何使用工具类四.工具类中批量更新Redis Hash详解总结前言 本文将提供一个redis的工具类,可以用在...
    99+
    2024-04-02
  • ASP.NET Core怎么使用IHttpClientFactory发出HTTP请求
    今天小编给大家分享一下ASP.NET Core怎么使用IHttpClientFactory发出HTTP请求的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章...
    99+
    2023-06-29
  • Java全能工具类之Hutool怎么使用
    本篇内容主要讲解“Java全能工具类之Hutool怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java全能工具类之Hutool怎么使用”吧!Hutool简介Hutool是一个Java工...
    99+
    2023-07-05
  • java集合排序工具类怎么使用
    Java集合排序工具类可以使用`java.util.Collections`类中的静态方法来实现。以下是使用Java集合排序工具类的...
    99+
    2023-10-26
    java
  • JAVA中的HTTP请求怎么利用HttpClient实现发送
    JAVA中的HTTP请求怎么利用HttpClient实现发送?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。HttpClient介绍HttpClient 不是一个...
    99+
    2023-05-31
    java httpclient http
  • hutool工具类怎么使用
    这篇文章主要介绍“hutool工具类怎么使用”,在日常操作中,相信很多人在hutool工具类怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”hutool工具类怎么使用”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作