2016-04-29 68 views
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(); 
    } 
+0

超时异常并不表示失败的重定向 - 更可能是您碰到了防火墙。 HttpUrlConnection自动重定向30x代码。在连接尝试建立并查找SYN_SENT状态时,请检查您的网络'netstat -na' – Jan

+1

如果您的网络上已实施代理,请尝试使用SSL上下文执行此操作,如[this]中所述(http://stackoverflow.com/questions/1511674/how-do-a-send-an-https-request-through-a-proxy-in-java)post。 – redoc

回答

1

您的代码为我工作。很明显,你正面临着一些网络问题。

http://www.linkedin.com在您的浏览器上不了下? 如果是,那么你可以检查它是否使用了一些代理。