一 :需求:写一个Junit测试链接可用。
public void linksAndWikiPages() throws Exception {
List<String> urlList = new ArrayList <String> ();
urlList.add("");
try {
for(int u=0;u<urlList.size();u++){
System.setProperty("javax.net.ssl.trustStore","C:/crt");//this is point
String href = urlList.get(u);
selenium.shutDownSeleniumServer();
URL url = new URL(href);
URLConnection connection = url.openConnection();
if(connection instanceof HttpURLConnection){
HttpURLConnection httpConnection = (HttpURLConnection) connection;
int code = httpConnection.getResponseCode();
assertEquals(code, 200);
}else{
System.out.println();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
二 :有一些网站经过SSL加密的,所以必须在本地添加秘钥证书,才可以用上面的方式测试URL的连通性。要不然会遇到运行时异常:
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty。
打开你要测试的网址,然后导出网站的SSL证书,c:/crt
用記事本打開類似:
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQS6WuWd7dHMeAfIkikfDiQzANBgkqhkiG9w0BAQQFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wNjA1MTUyMzE4MTFaFw0w
j8thQJ7StDhAISTBTx/LE0qPlQLfkT3WQOsRb5sQoW/OkV4w9m0TXhWkLsIYngDD
2DJnR/y4HprZmo7M/3wStwO/UiDPIfTzd90SFfCU+pDV41logQ==
-----END CERTIFICATE-----
System.setProperty("javax.net.ssl.trustStore","c:/crt");
在这个%JAVA_HOME%/bin/keytool.exe有个keytool工具,也是将你网站的证书文件加到本地环境中。
%JAVA_HOME%\bin\keytool -import -file 'parm1' -keystore 'parm2'
parm1是导入证书的文件名称(crt)
parm1是导入证书的文件所在文件夹(c:/)
导入过程中会提示用户输入密码,这个用户名和密码都是任意的。