• httpclient常规封装的方法


           <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>1.18</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.4</version>
            </dependency>
            <dependency>
                <groupId>com.relevantcodes</groupId>
                <artifactId>extentreports</artifactId>
                <version>2.41.1</version>
            </dependency>
            <dependency>
                <groupId>com.vimalselvam</groupId>
                <artifactId>testng-extentsreport</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>com.aventstack</groupId>
                <artifactId>extentreports</artifactId>
                <version>3.0.6</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.47</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.14</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.3</version>
            </dependency>
    package zhihuisystem.HttpClient_Test;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.security.KeyManagementException;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.StatusLine;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.ResponseHandler;
    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.conn.scheme.Scheme;
    import org.apache.http.conn.ssl.NoopHostnameVerifier;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.conn.ssl.SSLSocketFactory;
    import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
    import org.apache.http.entity.BufferedHttpEntity;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.BasicResponseHandler;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.ssl.SSLContexts;
    import org.apache.http.util.EntityUtils;
    
    public class HttpClient_Utils {
        // 常规get请求
        public static String Getmethod(String url) {
            CloseableHttpClient client = HttpClientBuilder.create().build();
            HttpGet get = new HttpGet(url);
            CloseableHttpResponse respons1 = null;
            try {
                respons1 = client.execute(get);
            } catch (ClientProtocolException e1) {
                System.out.println("客户端get请求异常");
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            // 切割字符串
            String result = respons1.getStatusLine().toString().split(" ")[1];
    
            try {
                client.close();// 释放资源
            } catch (IOException e) {
                System.out.println("请求连接无法关闭,关注get方法!");
                e.printStackTrace();
            }
            return result;
    
        }
    
        // 常规P0ST请求
        public static String HttpPostWithJson(String url, String json) {
    
            String returnValue = "这是默认返回值,接口调用失败";
            CloseableHttpClient httpClient = HttpClients.createDefault();
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            try {
                // 创建HttpClient对象
                httpClient = HttpClients.createDefault();
                // 创建httpPost对象
                HttpPost httpPost = new HttpPost(url);
                // 给httpPost设置JSON格式的参数
                StringEntity requestEntity = new StringEntity(json, "utf-8");
                requestEntity.setContentEncoding("UTF-8");
                httpPost.setHeader("Content-type", "application/json");
                httpPost.setEntity(requestEntity);
                // 发送HttpPost请求,获取返回值
                returnValue = httpClient.execute(httpPost, responseHandler); // 调接口获取返回值,用此方法
            } catch (Exception e) {
                System.out.println("请求返回值为空!");
                e.printStackTrace();
            }
    
            finally {
                try {
                    httpClient.close();
                } catch (IOException e) {
                    System.out.println("请求连接无法关闭,关注post方法!");
                    e.printStackTrace();
                }
            }
            // 第五步:处理返回值
            return returnValue;
        }
    
        // 忽略证书的HTTPS请求 - get
        public static String HttpsGetIgnoreCertification(String url)
                throws NoSuchAlgorithmException, KeyManagementException, ClientProtocolException, IOException {
            // First create a trust manager that won't care.
            X509TrustManager trustManager = new X509TrustManager() {
                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    // Don't do anything.
                }
    
                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    // Don't do anything.
                }
    
                public X509Certificate[] getAcceptedIssuers() {
                    // Don't do anything.
                    return null;
                }
    
            };
            // 现在将信任管理器放到SSLContext中。
            SSLContext sslcontext = SSLContext.getInstance("SSL");
            sslcontext.init(null, new TrustManager[] { trustManager }, null);
            SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
            sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    
            DefaultHttpClient httpclient = new DefaultHttpClient();
            httpclient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", sf, 443));
    
            HttpGet httpget = new HttpGet(url);
    //        String result = "";
            httpget.setHeader("Content-type", "application/json");
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            EntityUtils.consume(entity);
    //        String result1 = response.getStatusLine().toString();
    //        String result2 = response.getStatusLine().toString().split(" ")[2];
            String result3 = response.getStatusLine().toString().split(" ")[1];
            return result3;
    
        }
    
        // 忽略证书的HTTPS请求 - post
        public static String HttpsPostIgnoreCertification(String url, String requestData)
                throws NoSuchAlgorithmException, KeyManagementException, ClientProtocolException, IOException {
            // First create a trust manager that won't care.
            X509TrustManager trustManager = new X509TrustManager() {
                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    // Don't do anything.
                }
    
                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    // Don't do anything.
                }
    
                public X509Certificate[] getAcceptedIssuers() {
                    // Don't do anything.
                    return null;
                }
    
            };
            // 现在将信任管理器放到SSLContext中。
            SSLContext sslcontext = SSLContext.getInstance("SSL");
            sslcontext.init(null, new TrustManager[] { trustManager }, null);
            SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
            sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    
            DefaultHttpClient httpclient = new DefaultHttpClient();
            httpclient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", sf, 443));
    
            HttpPost httpPost = new HttpPost(url);
            String result = "";
    //            httpPost.setHeader("Authorization", "basic " + "dGNsb3VkYWRtaW46dGNsb3VkMTIz");
            httpPost.setHeader("Content-type", "application/json");
            StringEntity reqEntity;
            // 将请求参数封装成HttpEntity
            reqEntity = new StringEntity(requestData);
            BufferedHttpEntity bhe = new BufferedHttpEntity(reqEntity);
            httpPost.setEntity(bhe);
    
            HttpResponse response = httpclient.execute(httpPost);
            HttpEntity resEntity = response.getEntity();
            InputStreamReader reader = new InputStreamReader(resEntity.getContent());
            // 取内存资源
            char[] buff = new char[1024];
            int length = 0;
            while ((length = reader.read(buff)) != -1) {
                result += new String(buff, 0, length);
            }
            httpclient.close();
            return result;
    
    //            System.out.println(result);
        }
    
        // 启用HTTPS携带证书GET请求
        public static String HttpsforGet(String url, String keystore_PathFile, String keypwd) throws IOException,
                KeyManagementException, NoSuchAlgorithmException, KeyStoreException, CertificateException {
            HttpGet httpGet = new HttpGet(url);
            CloseableHttpClient httpClient = null;
            if (url.startsWith("https")) {
    //            "E:\White_testNG\mock\mock_https\isa\isa.keystor"
                File cert = new File(keystore_PathFile);
                String keystore = keypwd;
                // Trust own CA and all self-signed certs
                SSLContext sslcontext = SSLContexts.custom()
                        .loadTrustMaterial(cert, keystore.toCharArray(), new TrustSelfSignedStrategy()).build();
                // Allow TLSv1 protocol only
                SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" },
                        null, NoopHostnameVerifier.INSTANCE);
                httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
            } else {
                httpClient = HttpClients.createDefault();
            }
            try (CloseableHttpClient _httpClient = httpClient; CloseableHttpResponse res = _httpClient.execute(httpGet);) {
    
                StatusLine sl = res.getStatusLine();
    //                System.out.println(sl.toString().split(" ")[1]);
                String result = sl.toString().split(" ")[1];
                /*
                 * if (sl != null) { System.out.println(sl.getStatusCode()); StringBuilder
                 * builder = new StringBuilder(); try (InputStream is =
                 * res.getEntity().getContent(); InputStreamReader isr = new
                 * InputStreamReader(is); BufferedReader br = new BufferedReader(isr);) { String
                 * line = br.readLine(); while(line != null) { builder.append(line); line =
                 * br.readLine(); } System.out.println("响应结果:" + builder.toString());
                 */
                return result;
            }
        }
    
        // 启用HTTPS携带证书post请求
        public static String HttpsforPost(String url, String keystore_PathFile, String keypwd, String json)
                throws ClientProtocolException, IOException, KeyManagementException, NoSuchAlgorithmException,
                KeyStoreException, CertificateException {
    
            String returnValue = "这是默认返回值,接口调用失败";
            HttpPost httppost = new HttpPost(url);
            CloseableHttpClient httpClient = null;
            if (url.startsWith("https")) {
                File cert = new File(keystore_PathFile);
                String keystore = keypwd;
                // Trust own CA and all self-signed certs
                SSLContext sslcontext = SSLContexts.custom()
                        .loadTrustMaterial(cert, keystore.toCharArray(), new TrustSelfSignedStrategy()).build();
                // Allow TLSv1 protocol only
                SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" },
                        null, NoopHostnameVerifier.INSTANCE);
                httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
            } else {
                httpClient = HttpClients.createDefault();
            }
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            try (CloseableHttpClient _httpClient = httpClient; CloseableHttpResponse res = _httpClient.execute(httppost);) {
                StringEntity requestEntity = new StringEntity(json, "utf-8");
                requestEntity.setContentEncoding("UTF-8");
                httppost.setHeader("Content-type", "application/json");
                httppost.setEntity(requestEntity);
                // 发送HttpPost请求,获取返回值
                returnValue = httpClient.execute(httppost, responseHandler); // 调接口获取返回值,用此方法
    
    //                System.out.println(returnValue);
    
            }
            return returnValue;
    
        }
    
    }
    学会珍惜和尊重知识带来的乐趣
  • 相关阅读:
    POJ2407:Relatives(欧拉函数) java程序员
    POJ1664:放苹果(搜索) java程序员
    关于android中数据库的创建以及基础的增删改查的相应操作
    家庭版记账本app开发进度。开发到现在整个app只剩下关于图表的设计了,具体功能如下
    在tap的碎片上与活动进行绑定实现点击事件(日期时间选择以及按钮跳转时间)
    使用tap、Fragment等相关相关知识点。实现类似微信的界面
    android学习相关intent和fragment的先关知识点
    家庭记账本app进度之关于tap的相关操作1
    家庭版记账本app进度之关于listview显示账单,并为其添加点击事件
    家庭版记账本app进度之编辑框组件
  • 原文地址:https://www.cnblogs.com/relax-zw/p/9883959.html
Copyright © 2020-2023  润新知