我正在使用以下代码从基于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网址?
任何帮助或想法都将受到赞赏。
由于
答案 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系统属性设置为包含服务器证书的密钥库的名称。
顺便说一句,抓住并打印异常以帮助诊断是一个好主意。