【发布时间】:2016-05-07 11:13:23
【问题描述】:
我正在尝试从 urlA 获取数据,但我一直被从 urlA 重定向到 urlB。
我收到响应代码 301(永久移动),但如果我使用任何浏览器(例如 Chrome、Firefox 甚至 Internet Explorer),我仍然可以转到 urlA 而不会被重定向。所以 urlA 仍然存在(浏览器不会从任何类型的缓存中加载它)并且如果您使用 Web 浏览器,它不会自动将用户重定向到 urlB。
如何强制使用 HttpURLConnection 的 Java 程序转到仍然存在的原始 urlA?
private StringBuffer getHTMLCode(String urlA) throws IOException {
URL url = new URL(urlA);
final String userAgent = "Mozilla/5.0";
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setInstanceFollowRedirects(false); // NO REDIRECT, if I set TRUE I will be redirected to urlB
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", userAgent);
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url); // shows my original urlA
System.out.println("Response Code : " + responseCode); // <-- 301 moved permanently
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuffer htmlCode = new StringBuffer();
String inputLine;
while ((inputLine = in.readLine()) != null) {
htmlCode.append(inputLine);
}
System.out.println(htmlCode); // <head><title>Document Moved</title></head><body><h1>Object Moved</h1>This document may be found <a HREF="urlB">here</a></body>
in.close();
return htmlCode;
}
【问题讨论】:
-
如果你得到 301,你就没有被重定向。不清楚你在问什么。
-
好的,但是,我没有从
urlA获得原始 html 代码,而是htmlCode包含不同的 html 并带有文本说“可能找到此文档...”(请参阅上面我的代码中的最后一个 sysout)。这就是为什么我认为我被重定向了。我的问题是:如何获取 urlA 的 html 代码?
标签: java httpurlconnection http-redirect http-response-codes