zoukankan      html  css  js  c++  java
  • http使用代理

    直接上代码:

    HttpUrlConnection使用代理:

     private static HttpURLConnection getConnection(URL url, String method, String ctype)
                throws IOException {
            HttpURLConnection conn;
            if (hasProxy) {
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
                conn = (HttpURLConnection)url.openConnection(proxy);
            } else {
                conn = (HttpURLConnection) url.openConnection();
            }
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setRequestMethod(method);
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("Connection", "Keep-Alive");
            return conn;
        }

    https:

     private static HttpsURLConnection getConnectionHttps(URL url, String method, String ctype)
                throws IOException {
    
            SSLContext sslContext = null;
            try {
                sslContext = SSLContext.getInstance("TLS"); // 或SSL
                X509TrustManager[] xtmArray = new X509TrustManager[]{new myX509TrustManager()};
                sslContext.init(null, xtmArray, new java.security.SecureRandom());
            } catch (GeneralSecurityException e) {
                e.printStackTrace();
            }
            if (sslContext != null) {
                HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
            }
            HttpsURLConnection.setDefaultHostnameVerifier(new myHostnameVerifier());
            HttpsURLConnection conn;
            if (hasProxy) {
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
                conn = (HttpsURLConnection)url.openConnection(proxy);
            } else {
                conn = (HttpsURLConnection) url.openConnection();
            }
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setRequestMethod(method);
            conn.setRequestProperty("Content-Type", ctype);
            conn.setRequestProperty("Connection", "Keep-Alive");
            return conn;
        }

    httpClent:

    RequestConfig requestConfig = null;
                if(StringUtil.isEmpty(proxyHost)){
                    requestConfig = RequestConfig.custom()
                            .setSocketTimeout(connectTimeout)
                            .setConnectTimeout(connectTimeout)
                            .build();
                }else{    //代理
                    HttpHost proxy = new HttpHost(proxyHost,proxyPort);
                    requestConfig = RequestConfig.custom()
                            .setProxy(proxy)
                            .setSocketTimeout(connectTimeout)
                            .setConnectTimeout(connectTimeout)
                            .build();
                }

    共同代码:

       private static String proxyHost;
        private static int proxyPort;
        private static boolean hasProxy = false;
    
        public void setProxy(String proxyHost,int proxyPort) {
            this.proxyHost = proxyHost;
            this.proxyPort = proxyPort;
            hasProxy = true;
        }
  • 相关阅读:
    C the basics (DMA)
    穷举子集
    排序算法(1)
    C the basics (array, complex)
    Linux中date命令的各种实用方法
    syntaxhighlight实现帝国cms代码高亮/语法高亮(一)
    帝国cms修改评论表情每行显示个数
    java 中hashcode 与 equals的关系
    Java 远程调用与分布式通信的区别
    帝国CMS的phomenewspic/ecmsinfo标签详解
  • 原文地址:https://www.cnblogs.com/chenglc/p/8308647.html
Copyright © 2011-2022 走看看