HttpURLConnection与服务器重定向

时间:2014-07-14 16:04:06

标签: android redirect httpurlconnection

我正在尝试使用此代码从网站获取源代码

        conn = (HttpURLConnection)url.openConnection();
        conn.setReadTimeout(10000);
        conn.setConnectTimeout(20000);
        conn.setRequestMethod("GET");
        conn.setDoInput(true);
        conn.addRequestProperty("User-Agent", "Mozilla/5.0");
        conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
        int response = conn.getResponseCode();
        if (response = 307){
            String locationHeader = conn.getHeaderField("Location");
            URL redirectURL = new URL(locationHeader);
            ...
        }

当服务器用307代码响应时,我使用服务器给出的新url创建一个与上述参数相同的新连接。 在前两个重定向后,此代码正常工作,第三个服务器提供了一个相对URL,当我的代码执行'new URL(locationHeader)时,它会强制MalformedURLException; ”。

所以我试图修复将'http:// servername /'添加到'locationHeader'字符串但是这样做会创建一个循环,导致服务器重定向到他重定向的第一个url链。 既然我的浏览器从该服务器获取源代码没有问题,有没有办法用HttpURLConnection实现呢?

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣,感谢Fiddler,我找到了解决这个问题的方法。 首先,我改变了用户代理"模仿Mozilla之一的属性然后我手动调整serer在其回复中发送的cookie与相对路径。 这就是诀窍。谢谢Fiddler。