考虑下面的Java类。我将此页面用作参考:
在HTTPS连接中禁用证书验证
C: MATLAB MyJavaClasses com stackoverflow Downloader.java
package com.stackoverflow;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.security.cert.X509Certificate;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import javax.net.ssl.HostnameVerifier;public class Downloader { public static String getData(String address) throws Exception { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; // Create a host name verifier that always passes HostnameVerifier allHostsValid = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); // open connection URL page = new URL(address); HttpURLConnection conn = (HttpURLConnection) page.openConnection(); BufferedReader buff = new BufferedReader(new InputStreamReader(conn.getInputStream())); // read text String line; StringBuffer text = new StringBuffer(); while ( (line = buff.readLine()) != null ) { //System.out.println(line); text.append(line + "n"); } buff.close(); return text.toString(); } public static void main(String[] argv) throws Exception { String str = getData("https://expired.badssl.com/"); System.out.println(str); }}的MATLAB
首先,我们编译Java类(必须使用与MATLAB兼容的JDK版本):
>> version -java>> system('javac C:MATLABMyJavaClassescomstackoverflowDownloader.java');接下来,我们实例化并使用它作为MATLAB:
javaaddpath('C:MATLABMyJavaClasses')dl = com.stackoverflow.Downloader;str = char(dl.getData('https://expired.badssl.com/'));web(['text://' str], '-new')以下是一些带有错误SSL证书的URL来进行测试:
urls = { 'https://expired.badssl.com/' % expired 'https://wrong.host.badssl.com/' % wrong host 'https://self-signed.badssl.com/' % self-signed 'https://revoked.grc.com/' % revoked};更新:
我应该提到,从R2014b开始,MATLAB具有一个
webread取代的新功能
urlread。



