首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接给出了来自代码的无效响应代码,但来自浏览器的有效响应代码

链接给出了来自代码的无效响应代码,但来自浏览器的有效响应代码
EN

Stack Overflow用户
提问于 2019-01-08 21:43:23
回答 1查看 224关注 0票数 1

我通过尝试点击链接并获取响应代码(Java语言)来验证链接。但是我从代码中得到了无效的响应码(403或404),但是从浏览器中,当我检查网络活动时,我得到了200个状态码。下面是获取响应码的代码。我事先对urls做了基本的验证,比如让它变得小写,等等。

代码语言:javascript
复制
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状态代码。

代码语言:javascript
复制
curl -Is http://science.sciencemag.org/content/220/4599/868
EN

回答 1

Stack Overflow用户

发布于 2019-01-09 19:32:24

克服这个问题的唯一方法是:

我为你做了这个分析,结果发现这个网站需要一个类似于现有浏览器的Accept头的Accept头。默认情况下,Java会发送一些有效的内容,但并不是这样的。

你只需要修改你的程序:

代码语言:javascript
复制
static int getResponseCode(String link) throws IOException {
  URL url = new URL(link);
  HttpURLConnection http = (HttpURLConnection) url.openConnection();
  http.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  return http.getResponseCode();
}

(或实际浏览器使用的任何其他值)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54093147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档