【发布时间】:2019-01-08 13:43:23
【问题描述】:
我通过尝试点击链接并获取响应代码(在 Java 中)来验证链接。但是我从代码中得到了无效的响应代码(403 或 404),但是从浏览器中,当我检查网络活动时,我得到了 200 个状态代码。这是我获取响应代码的代码。 [我事先对 url 进行基本验证,比如将其设为小写等]
static int getResponseCode(String link) throws IOException {
URL url = new URL(link);
HttpURLConnection http = (HttpURLConnection) url.openConnection();
return http.getResponseCode();
}
对于http://science.sciencemag.org/content/220/4599/868 之类的链接,我在运行此代码时得到 403 状态。但是在浏览器(chrome)上,我得到了 200 个状态。另外,如果我使用下面的 curl 命令,我会得到 200 个状态码。
curl -Is http://science.sciencemag.org/content/220/4599/868
【问题讨论】:
-
该网站可能不喜欢机器人,并检查传入请求是否由已知浏览器发出。这听起来可能很愚蠢,但这是一种相当普遍的态度。
-
请检查浏览器中的所有请求标头和响应标头 - 然后查看您的代码有什么不同。还请确保在收到 403 或 404 后阅读响应正文 - 它可能包含其他信息。
-
您的代码是正确的,但您尝试测试的 URL 似乎有问题。恐怕 HttURLConnection 类无法获得正确的 url 地址
-
@kumesana 有什么办法克服这个问题吗?另外,如果我使用 curl,我会得到正确的状态码。
-
你能贴出你用来发出请求的代码 sn-p 吗?
标签: java http-response-codes external-links