2010-02-11 17 views
0

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

谢谢。

+0

请分享错误堆栈跟踪。这将有助于了解问题的根源。 – 2010-02-12 00:41:25

回答

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

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