2009-06-25 101 views
0

我使用以下代碼從基於https的URL中檢索響應代碼,但是當我運行prog時,它只是掛起了cont。如何閱讀Https網址的回覆?

代碼:

import java.net.; 
import javax.net.ssl.; 
import java.io.*; 

class Https2 
{ 
    public static void main(String args[]) throws Exception 
    { 
     URL u = new URL("https://myurl"); 
     HttpsURLConnection hc = (HttpsURLConnection)u.openConnection(); 
     hc.setConnectTimeout(3000); 
     hc.setReadTimeout(5000); 
     System.out.println("Response Code: " + hc.getResponseCode()); 
     hc.disconnect(); 
    } 
} 

如何能對HTTPS URL中全成連接?

任何幫助或想法將不勝感激。

感謝

回答

0

我試圖連接的樣品與https://mail.google.com/mail/,它在Linux和Mac OS X.

+0

但是相同的URL和相同的代碼不在這裏工作(winxp sp2)。 這可能是什麼原因?源代碼或任何其他問題有任何問題嗎?有什麼想法? – Matrix 2009-06-25 07:13:30

0

https://mail.google.com/mail/作品在我的Windows XP框完美無缺。也許你的Windows防火牆設置不包含java.exe作爲異常?或者您要連接到的站點通過HTTPS連接使用HTTP基本驗證。 或者該網站需要您使用他人建議的證書來識別自己?

編輯:嘗試沒有超時參數的代碼。 HTTPS連接和握手通常比普通的HTTP調用慢。在讀取請求的數據之前,您的連接可能會超時。

我的東西hc.setConnectionTimeout()可能不工作,因爲當你到達那一點時,根據javadoc已經有一個工作連接。

0

默認情況下,服務器的身份驗證是必需的。您需要將javax.net.ssl.trustStore系統屬性設置爲包含服務器證書的密鑰庫的名稱。

順便說一句,抓住並打印異常以幫助診斷是個好主意。