【问题标题】:HttpURLConnection with server redirections带有服务器重定向的 HttpURLConnection
【发布时间】:2014-07-14 16:04:06
【问题描述】:

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

        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。 此代码在执行前 2 次重定向时工作正常,在第三次重定向时,服务器提供了一个相对 url,当我的代码执行时会强制 MalformedURLException 'new URL(locationHeader); '。

所以我尝试修复将“http://servername/”添加到“locationHeader”字符串但这样做会创建一个循环导致服务器然后重定向到他重定向的第一个 url链。 因为我的浏览器可以毫无问题地从该服务器获取源代码,有没有办法通过 HttpURLConnection 来实现?

【问题讨论】:

    标签: android redirect httpurlconnection


    【解决方案1】:

    如果有人对 Fiddler 感兴趣,我想出了一个解决这个问题的方法。 首先,我更改了“User-Agent”属性以模仿 Mozilla 的属性,然后我手动调整了 serer 在其回复中使用相对路径发送的 cookie。 那成功了。谢谢提琴手。

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 2011-06-14
      • 1970-01-01
      • 2016-07-31
      • 2021-05-28
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      相关资源
      最近更新 更多