URL地址檢測是否可用,支持https地址檢測

package com.example.demo.util;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * URL地址檢測
 */
public class UrlUtil {

    public static void main(String[] args) {
        String url1 = "http://47.107.247.72:8001/2019-12-10/246fdabfdc9d4544b8959b2211660815/_480_.m3u8?AWSAccessKeyId=Q3AM3UQ867SPQQA43P2F&Expires=1891322771&response-content-type=audio%2Fx-mpegurl&Signature=pMRTKrJWthXYEKYqzHEGGj6ZUyg%3Dhttp://47.107.247.72:8001/2019-12-10/246fdabfdc9d4544b8959b2211660815/_480_.m3u8?AWSAccessKeyId=Q3AM3UQ867SPQQA43P2F&Expires=1891322771&response-content-type=audio%2Fx-mpegurl&Signature=pMRTKrJWthXYEKYqzHEGGj6ZUyg%3D";
        String httpsUrl = "https://www.veer.com/vectorgraph/343634997";
        boolean flag1 = isTrue(url1);
        System.out.println("flag1=====================>"+flag1);
        boolean flag2 = isTrue(httpsUrl);
        System.out.println("flag2=====================>"+flag2);
    }


    /**
     * 設置 https 請求
     * @throws Exception
     */
    private static void trustAllHttpsCertificates() throws Exception {
        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String str, SSLSession session) {
                return true;
            }
        });
        javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
        javax.net.ssl.TrustManager tm = new SslTrustManager();
        trustAllCerts[0] = tm;
        javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext
                .getInstance("SSL");
        sc.init(null, trustAllCerts, null);
        javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc
                .getSocketFactory());
    }


    static class SslTrustManager implements javax.net.ssl.TrustManager,javax.net.ssl.X509TrustManager {

        @Override
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        public boolean isServerTrusted(
                java.security.cert.X509Certificate[] certs) {
            return true;
        }

        public boolean isClientTrusted(
                java.security.cert.X509Certificate[] certs) {
            return true;
        }

        @Override
        public void checkServerTrusted(
                java.security.cert.X509Certificate[] certs, String authType)
                throws java.security.cert.CertificateException {
            return;
        }

        @Override
        public void checkClientTrusted(
                java.security.cert.X509Certificate[] certs, String authType)
                throws java.security.cert.CertificateException {
            return;
        }


    }


    public static Boolean isTrue(String imgUrl) {
        Integer RESPONSE_CODE = 0;
        try {
            URL url = new URL(imgUrl);
            trustAllHttpsCertificates();
            HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
            //這裏設置超時時間,防止一直不返回結果,就一直等待
            urlCon.setConnectTimeout(300);
            RESPONSE_CODE = urlCon.getResponseCode();
        } catch (Exception e) {
            System.out.println("url errror...:"+e.getMessage());
            return false;
        }
        if (RESPONSE_CODE == HttpURLConnection.HTTP_OK) {
            System.out.println("url is ok!");
            return true;
        } else {
            System.out.println("Bad url...");
            return false;
        }
    }
}

 

發佈了8 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章