zoukankan      html  css  js  c++  java
  • HTTP/HTTPS GET&POST两种方式的实现方法

    关于GET及POST方式的区别请参照前面文章:
    http://www.cnblogs.com/hunterCecil/p/5698604.html

    http://www.cnblogs.com/hunterCecil/p/5661459.html

    本文具体说明HTTP/HTTPS下GET&POST两种方式的实现方法

    公共实现类如下:

    public class HttpCommonUtil {
    
        private HttpCommonUtil () {
        }
    
        public static String post(String url, String body) {
            if (url.startsWith("https"))
                return httpsPost(url, body);
            else
                return httpPost(url, body);
        }
    
        private static String httpPost(String url, String body) {
            Client client = ClientBuilder.newClient();
            WebTarget target = client.target(url);
            Response response = target.request()
                    .buildPost(Entity.entity(body, MediaType.APPLICATION_JSON)).invoke();
            String re = response.readEntity(String.class);
            response.close();
            LOG.info("http post返回数据: " + re);
            return re;
        }
    
        private static String httpsPost(String url, String body) {
            ClientConfig clientConfig = new ClientConfig().connectorProvider(new HttpUrlConnectorProvider());
            SSLContext sc = null;
            try {
                sc = SSLContext.getInstance("TLS");
                sc.init(null, new TrustManager[]{new ParkingTrustManager()}, new SecureRandom());
            } catch (NoSuchAlgorithmException e) {
                LOG.error(e);
            } catch (KeyManagementException e) {
                LOG.error(e);
            }
            HostnameVerifier verifier = new HostnameVerifier() {
                @Override
                public boolean verify(String s, SSLSession sslSession) {
                    return true;
                }
            };
            Client client = ClientBuilder.newBuilder().withConfig(clientConfig)
                    .sslContext(sc).hostnameVerifier(verifier).build();
    
            WebTarget target = client.target(url);
            Response response = target.request()
                    .buildPost(Entity.entity(body, MediaType.APPLICATION_JSON)).invoke();
            String re = response.readEntity(String.class);
            response.close();
            LOG.info("https post返回数据: " + re);
            return re;
        }
    
        static class ParkingTrustManager implements TrustManager, X509TrustManager {
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
    
            public void checkServerTrusted(X509Certificate[] certs, String authType)
                    throws CertificateException {
                return;
            }
    
            public void checkClientTrusted(X509Certificate[] certs, String authType)
                    throws CertificateException {
                return;
            }
        }
    
        public static String get(String url) {
            if (url.startsWith("https"))
                return httpsGet(url);
            else
                return httpGet(url);
        }
    
        private static String httpsGet(String url) {
            ClientConfig clientConfig = new ClientConfig().connectorProvider(new HttpUrlConnectorProvider());
            SSLContext sc = null;
            try {
                sc = SSLContext.getInstance("TLS");
                sc.init(null, new TrustManager[]{new ParkingTrustManager()}, new SecureRandom());
            } catch (NoSuchAlgorithmException e) {
                LOG.error(e);
            } catch (KeyManagementException e) {
                LOG.error(e);
            }
            HostnameVerifier verifier = new HostnameVerifier() {
                @Override
                public boolean verify(String s, SSLSession sslSession) {
                    return true;
                }
            };
    
            Client client = ClientBuilder.newBuilder().withConfig(clientConfig)
                    .sslContext(sc).hostnameVerifier(verifier).build();
    
            WebTarget target = client.target(url);
            Response response = target.request().buildGet().invoke();
            String re = response.readEntity(String.class);
            response.close();
            LOG.info("https post返回数据: " + re);
            return re;
        }
    
        private static String httpGet(String url) {
            Client client = ClientBuilder.newClient();
            WebTarget target = null;
            target = client.target(url);
            Response response = target.request().buildGet().invoke();
            String re = response.readEntity(String.class);
            response.close();
            LOG.info("http post返回数据: " + re);
            return re;
        }
    } 

    测试类:

  • 相关阅读:
    Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
    Jsonpath的基本使用
    [转]什么是CNN、RNN、LSTM
    [转]爬虫 selenium + phantomjs / chrome
    [转]js async await 终极异步解决方案
    [转]如何让多个不同类型的后端网站用一个nginx进行反向代理实际场景分析
    [转]java常用正则表达式
    [转]关于SSH与SSM的组成及其区别
    用live2d给自己的博客园加个小卡通,可以固定model也可以随机设置
    [转]关于/r与/n 以及 /r/n 的区别总结
  • 原文地址:https://www.cnblogs.com/hunterCecil/p/8000859.html
Copyright © 2011-2022 走看看