3
我在连接到我的Java代码中特定URL的HTTP请求时遇到问题。例如:http://www.linkedin.com。这会引发服务器不可用错误。 (TimeOutException)。 不过,我想我的连接重定向HTTP请求到Location头值如果responseCode是301或302使用HTTPURLConnection在HTTP中对HTTP进行HTTPS重定向
代码段:
HttpURLConnection urlConn =(HttpURLConnection) new URL(url).openConnection(); //For eg : http://www.linkedin.com
urlConn.setConnectTimeout(10*1000);
urlConn.setReadTimeout(10*1000);
boolean redirect = false;
int status = urlConn.getResponseCode(); //No response. Throws exception
if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM)
{
redirect = true;
}
String contenttype = urlConn.getContentType();
if(redirect)
{
String newUrl = urlConn.getHeaderField("Location");//No I18N
urlConn = (HttpURLConnection) new URL(newUrl).openConnection();
urlConn.connect();
contenttype = urlConn.getContentType();
}
超时异常并不表示失败的重定向 - 更可能是您碰到了防火墙。 HttpUrlConnection自动重定向30x代码。在连接尝试建立并查找SYN_SENT状态时,请检查您的网络'netstat -na' – Jan
如果您的网络上已实施代理,请尝试使用SSL上下文执行此操作,如[this]中所述(http://stackoverflow.com/questions/1511674/how-do-a-send-an-https-request-through-a-proxy-in-java)post。 – redoc