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