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;
        }
    } 

    测试类:

  • 相关阅读:
    机器学习基础1--线性回归
    联想RD350板载RAID110i,安装CentOS 7 不识别RAID设备
    CentOS 7磁盘寻找不到,卡在sulogin,造成的开机失败问题--Error getting authority...
    gitlab同步插件gitlab-mirrors报错<已解决,未找到原因>
    马哥Linux SysAdmin学习笔记(四)
    马哥Linux SysAdmin学习笔记(三)
    马哥Linux SysAdmin学习笔记(二)
    马哥Linux SysAdmin学习笔记(一)
    php-round()四舍六入
    Linux权限问题(2)-unzip引发的权限问题
  • 原文地址:https://www.cnblogs.com/hunterCecil/p/8000859.html
Copyright © 2011-2022 走看看