使用Axis2通过Java使用HTTPS登录SharePoint

时间:2010-02-11 19:14:06

标签: java sharepoint axis2

我正在尝试使用Java(以及Axis2作为从WSDL创建类的机制)访问SharePoint服务器。如果站点是通过HTTP托管但是通过HTTPS它失败,我可以登录并执行一些操作。有没有人有这方面的经验或知道获得帮助的好资源?

感谢。

1 个答案:

答案 0 :(得分:0)

可以肯定的是,您与安全站点的连接失败,因为您的连接不接受所提供的SSL证书。要对此进行测试,请在连接之前运行以下代码:

public static void trustAllSSL() {

    TrustManager[] trustAllCerts = new TrustManager[] {
            new X509TrustManager() {
                public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
                public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
                public X509Certificate[] getAcceptedIssuers() { return null; }
            }
    };
    HostnameVerifier hostVerify = new HostnameVerifier() {
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };

    try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(hostVerify);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {} public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {} public X509Certificate[] getAcceptedIssuers() { return null; } } }; HostnameVerifier hostVerify = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(hostVerify); } catch (Exception e) { e.printStackTrace(); } }

如果您可以在运行上述代码后使用Axis2进行连接,那就是原因。然后,您可以继续使用上面的代码,或者从站点获取实际证书(使用IE或Firefox访问站点,然后从其缓存中获取证书)并将其添加到Java密钥库中。