如何阅读来自Https网址的回复?

时间:2009-06-25 06:37:27

标签: java

我正在使用以下代码从基于https的网址检索响应代码,但是当我运行prog时,它只是挂起cont。

代码:

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网址?

任何帮助或想法都将受到赞赏。

由于

4 个答案:

答案 0 :(得分:1)

不知道它是否有帮助,但我从来没有对JDK HTTP类感到高兴,并且通常使用Jakarta Common HTTP Client API(http://hc.apache.org/httpclient-3.x/)。

答案 1 :(得分:0)

我使用https://mail.google.com/mail/尝试了附带的示例,它在linux和Mac OS X上运行良好。

答案 2 :(得分:0)

https://mail.google.com/mail/适用于我的Windows XP游戏机。也许您的Windows防火墙设置不包含java.exe作为例外?或者您要连接的站点使用HTTPS连接上的HTTP基本身份验证。 或者网站需要您使用其他人建议的证书来表明自己的身份?

编辑:尝试使用没有超时参数的代码。 HTTPS连接和握手通常比常规HTTP调用慢。在您可以读取请求的数据之前,您的连接可能会超时。

我的事hc.setConnectionTimeout()甚至可能无法正常工作,因为当你到达那一点时,你已经根据javadoc建立了有效连接。

答案 3 :(得分:0)

默认情况下,需要对服务器进行身份验证。您需要将javax.net.ssl.trustStore系统属性设置为包含服务器证书的密钥库的名称。

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