1、SoapClient
package com.neohope; import java.net.URL; import java.rmi.RemoteException; public class SoapClientTest { public static void HelloHttp(String url) throws RemoteException { HelloStub h = new HelloStub(url); com.neohope.HelloStub.HelloWorld hello = new com.neohope.HelloStub.HelloWorld(); hello.setName("Java http client"); com.neohope.HelloStub.HelloWorldResponse rsp = h.helloWorld(hello); System.out.println(rsp.getHelloWorldResult()); } public static void HelloHttps(String url,String trustStorePath,String trustStorePwd) throws RemoteException { URL jksurl = SoapClientTest.class.getClassLoader().getResource( "myTrustStore.jks"); String jks = jksurl.getFile(); System.setProperty("javax.net.ssl.trustStore", jks); System.setProperty("javax.net.ssl.trustStorePassword", trustStorePwd); HelloStub h = new HelloStub(url); com.neohope.HelloStub.HelloWorld hello = new com.neohope.HelloStub.HelloWorld(); hello.setName("Java https client"); com.neohope.HelloStub.HelloWorldResponse rsp = h.helloWorld(hello); System.out.println(rsp.getHelloWorldResult()); } public static void main(String[] args) throws RemoteException { //HelloHttp("http://localhost:80/Hello.asmx"); HelloHttps("https://localhost:443/Hello.asmx","myTrustStore.jks","sslTestPwd"); } }
2、SoapClientWithContextTest
package com.neohope; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URL; import java.rmi.RemoteException; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import javax.net.ssl.KeyManager; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; public class SoapClientWithContextTest { public static void HelloHttp(String url) throws RemoteException { HelloStub h = new HelloStub(url); com.neohope.HelloStub.HelloWorld hello = new com.neohope.HelloStub.HelloWorld(); hello.setName("Java http client"); com.neohope.HelloStub.HelloWorldResponse rsp = h.helloWorld(hello); System.out.println(rsp.getHelloWorldResult()); } public static void HelloHttps(String url,String trustStorePath,String trustStorePwd) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, CertificateException, FileNotFoundException, IOException { URL jksurl = SoapClientTest.class.getClassLoader().getResource( "myTrustStore.jks"); String jks = jksurl.getFile(); KeyStore trustStore = KeyStore.getInstance("JKS"); trustStore.load(new FileInputStream(jks), trustStorePwd.toCharArray()); TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509"); trustManagerFactory.init(trustStore); SSLContext sslContext = SSLContext.getInstance("TLSv1"); //SSLContext sslContext = SSLContext.getInstance("SSLv3"); sslContext.init(new KeyManager[0], trustManagerFactory.getTrustManagers(), null); SSLContext.setDefault(sslContext); HelloStub h = new HelloStub(url); com.neohope.HelloStub.HelloWorld hello = new com.neohope.HelloStub.HelloWorld(); hello.setName("Java https client"); com.neohope.HelloStub.HelloWorldResponse rsp = h.helloWorld(hello); System.out.println(rsp.getHelloWorldResult()); } public static void main(String[] args) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException { //HelloHttp("http://localhost:80/Hello.asmx"); HelloHttps("https://localhost:443/Hello.asmx","myTrustStore.jks","sslTestPwd"); } }
3、SoapClientWithTrustManagerTest
可以绕过证书检查
package com.neohope; import java.io.FileNotFoundException; import java.io.IOException; import java.rmi.RemoteException; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.KeyManager; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class SoapClientWithTrustManagerTest { public static void HelloHttp(String url) throws RemoteException { HelloStub h = new HelloStub(url); com.neohope.HelloStub.HelloWorld hello = new com.neohope.HelloStub.HelloWorld(); hello.setName("Java http client"); com.neohope.HelloStub.HelloWorldResponse rsp = h.helloWorld(hello); System.out.println(rsp.getHelloWorldResult()); } public static void HelloHttps(String url,String trustStorePath,String trustStorePwd) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, CertificateException, FileNotFoundException, IOException { SSLContext sslContext = SSLContext.getInstance("TLSv1"); //SSLContext sslContext = SSLContext.getInstance("SSLv3"); sslContext.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, new SecureRandom()); SSLContext.setDefault(sslContext); HelloStub h = new HelloStub(url); com.neohope.HelloStub.HelloWorld hello = new com.neohope.HelloStub.HelloWorld(); hello.setName("Java https client"); com.neohope.HelloStub.HelloWorldResponse rsp = h.helloWorld(hello); System.out.println(rsp.getHelloWorldResult()); } private static class DefaultTrustManager 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; } } public static void main(String[] args) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException { //HelloHttp("http://localhost:80/Hello.asmx"); HelloHttps("https://localhost:443/Hello.asmx","myTrustStore.jks","sslTestPwd"); } }