我正在尝试通过 Java 中的 URL 获取 HTML。但
301 Moved Permanently
就是我所拥有的一切。其他网址有效。怎么了?这是我的代码:
hh= new URL("http://hh.ru");
in = new BufferedReader(
new InputStreamReader(hh.openStream()));
while ((inputLine = in.readLine()) != null) {
sb.append(inputLine).append("\n");
str=sb.toString();//returns 301
}
您面临着重定向到其他 URL 的情况。这是很正常的,网站可能有很多原因来重定向您。只需遵循基于“位置”HTTP 标头的重定向即可:
URL hh= new URL("http://hh.ru");
URLConnection connection = hh.openConnection();
String redirect = connection.getHeaderField("Location");
if (redirect != null){
connection = new URL(redirect).openConnection();
}
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
System.out.println();
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
您的浏览器会自动跟踪重定向,但使用 URLConnection 您应该自己进行重定向。如果它困扰您,请查看其他Java HTTP 客户端 实现,例如 Apache HTTP 客户端。他们中的大多数都能够自动遵循重定向。
发现这个答案很有用,并且由于可以进行多次重定向(例如 307 然后 301)而有所改进。
URLConnection urlConnection = url.openConnection();
String redirect = urlConnection.getHeaderField("Location");
for (int i = 0; i < MAX_REDIRECTS ; i++) {
if (redirect != null) {
urlConnection = new URL(redirect).openConnection();
redirect = urlConnection.getHeaderField("Location");
} else {
break;
}
}
您的代码没有任何问题。该消息意味着
hh.ru
已永久移动到另一个域。
我测试了你的代码,没问题,但是当我使用“hh.ru”时,与你的问题相同,当我使用lynx(命令行浏览器)连接到“hh.ru”时,它会告诉我它正在重定向到另一个网址,然后向我显示它已永久移动,之后出现此警报:
“警告!:此客户端不支持 HTTPS URL”
检查提供的 URL 是 HTTP 还是 HTTPS,如果您仅使用域名(例如
http(s)://domainname.com/resource-name
),请考虑添加协议
当我将特定文件放在服务器上运行时,我解决了我的问题。 而不是
http://hh.ru
,
我用过http://hh.ru/index.php
。
它对我有用
几个月来,www.giogamer.com 对我开放。我已经注册了,但在另一个网站https://iranwushufed.ir/注册并输入我的国家代码卡号后,www.giogamer.com打开了。我应该怎么做才能打开它并修复它?