【发布时间】: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