zoukankan      html  css  js  c++  java
  • JDK原生的HttpURLConnection请求实例

    不想说啥,上代码! 

    package com.my.https;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.security.SecureRandom;
    
    import javax.net.ssl.HostnameVerifier;
    import javax.net.ssl.HttpsURLConnection;
    import javax.net.ssl.KeyManager;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLSession;
    import javax.net.ssl.SSLSocketFactory;
    import javax.net.ssl.TrustManager;
    
    public class HttpURLConnectionFactory {
    
        public static int DEFAULT_CONN_TIMEOUR = 30000;
    
        public static HttpURLConnection getConn(String url) throws Throwable {
            HttpURLConnection conn = null;
            URL http = new URL(url);
            if (url.startsWith("https:")) {
                HttpsURLConnection httpsConn = null;
                SSLContext sslContext = SSLContext.getInstance("TLS");
                sslContext.init(new KeyManager[0], new TrustManager[] { new MyX509TrustManager() }, new SecureRandom());
                SSLSocketFactory ssf = sslContext.getSocketFactory();
                httpsConn = (HttpsURLConnection) http.openConnection();
                httpsConn.setSSLSocketFactory(ssf);
                httpsConn.setHostnameVerifier(new HostnameVerifier() {
                    @Override
                    public boolean verify(String hostname, SSLSession session) {
                        return true;
                    }
                });
                conn = httpsConn;
            } else {
                conn = (HttpURLConnection) http.openConnection();
            }
    
            return conn;
        }
    
        public static String sendGet(HttpURLConnection con) throws Throwable {
            addConnProp(con, "GET", true);
            BufferedReader br = null;
            StringBuffer resultBuffer = new StringBuffer();
            try {
                br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
                String temp;
                while ((temp = br.readLine()) != null) {
                    resultBuffer.append(temp);
                }
            } finally {
                if (br != null) {
                    try {
                        br.close();
                    } catch (IOException e) {
                        br = null;
                        throw new RuntimeException(e);
                    } finally {
                        if (con != null) {
                            con.disconnect();
                            con = null;
                        }
                    }
                }
            }
            return resultBuffer.toString();
        }
    
        public static String sendPost(HttpURLConnection con, String body) throws Throwable {
            addConnProp(con, "POST", true);
            OutputStream outStream = null;
            BufferedReader responseReader = null;
            StringBuffer sb = new StringBuffer();
            if (body != null) {
                outStream = con.getOutputStream();
                byte[] data = body.getBytes();
                outStream.write(data);
                outStream.flush();
                outStream.close();
            }
    
            int resultCode = con.getResponseCode();
    
            if (HttpURLConnection.HTTP_OK == resultCode) {
                String readLine = new String();
                responseReader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
                while ((readLine = responseReader.readLine()) != null) {
                    sb.append(readLine).append("
    ");
                }
                responseReader.close();
            }
            return sb.toString();
        }
    
        private static void addConnProp(HttpURLConnection conn, String method, boolean flag) throws Throwable {
    
            conn.setRequestMethod(method);
            conn.setConnectTimeout(DEFAULT_CONN_TIMEOUR);
            conn.setRequestProperty("accept", "*/*");
            // conn.setRequestProperty("Content-Type",
            // "application/x-www-form-urlencoded");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setUseCaches(false);
            if (flag) {
                conn.setDoInput(true);
                conn.setDoOutput(true);
                conn.setRequestProperty("connection", "Keep-Alive");
            }
        }
    }
    package com.my.https;
    
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    
    import javax.net.ssl.X509TrustManager;
    
    public class MyX509TrustManager implements X509TrustManager{
    
        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
            
        }
    
        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
            
        }
    
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    
    }
    MyX509TrustManager.java

    还是要说;没测过,不知道对不对

  • 相关阅读:
    poj1328
    xml入门简介--两天学会xml
    php的一些特殊用法
    数据结构(一)
    队列的 基本操作
    栈的 基本操作
    线性表----单链表
    线性表----顺序表
    数据结构
    链式队列
  • 原文地址:https://www.cnblogs.com/liangblog/p/7279350.html
Copyright © 2011-2022 走看看