我正在尝试使用此代码从网站获取源代码
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实现呢?
答案 0 :(得分:0)
如果有人感兴趣,感谢Fiddler,我找到了解决这个问题的方法。 首先,我改变了用户代理"模仿Mozilla之一的属性然后我手动调整serer在其回复中发送的cookie与相对路径。 这就是诀窍。谢谢Fiddler。