2010-02-11 16 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密鑰庫。