2009-06-25 65 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系统属性设置为包含服务器证书的密钥库的名称。

顺便说一句,抓住并打印异常以帮助诊断是个好主意。