从我的 Java 程序访问 URL 时出现 HTTP 503 错误 [重复]
Posted
技术标签:
【中文标题】从我的 Java 程序访问 URL 时出现 HTTP 503 错误 [重复]【英文标题】:Getting HTTP 503 error while accessing a URL from my Java program [duplicate] 【发布时间】:2011-01-04 23:36:03 【问题描述】:我正在构建一个 Java 应用程序,它将从网站下载 html 页面并将文件保存在我的本地系统中。我可以通过浏览器手动访问网页的 URL。但是当我尝试在我的 Java 程序中访问相同的 URL 时,服务器返回 503 错误。这是场景:
示例网址 = http://content.somesite.com/demo/somepage.asp
能够通过浏览器访问上述网址。但是下面的Java代码无法下载页面:
StringBuffer data = new StringBuffer();
BufferedReader br = null;
try
br = new BufferedReader(new InputStreamReader(sourceUrl.openStream()));
String inputLine = "";
while ((inputLine = br.readLine()) != null)
data.append(inputLine);
catch (Exception e)
e.printStackTrace();
finally
br.close();
所以,我的问题是:
我在这里做错了吗?
服务器有没有办法阻止来自程序/机器人的请求,只允许来自浏览器的请求?
【问题讨论】:
就问题 #2 而言,服务器可以配置为根据User-Agent
标头或缺少的 Referer
标头拒绝。
@ZoogieZork:如果这就是它正在做的事情,那就是行为不端。 5xx 错误用于解决内部服务器问题。机器人拒绝应该返回 4xx 错误。
我能想到的可能原因有很多(我个人认为不是“错误”的用户代理引起的,它宁愿返回一个4xx错误)。如果您敢于发布有问题的实际网址,那么我们可能会提供更好的答案。
您好朋友,感谢您的所有回复。我发现了上述错误的问题所在。我从代理后面的办公系统运行上述代码。因此,显然代码无法获取数据,因为我没有在我的 Java 代码中设置代理。但是当我在我的家庭系统中运行相同的代码时,它运行时没有出现故障,因为我的家庭系统没有任何代理。
【参考方案1】:
您可能想尝试将User-Agent
和Referer
HTTP 标头设置为类似于普通网络浏览器发送的内容。
您可以从此列表中选择一个用户代理字符串:Seehowitruns: User-agent strings。
此外,如果您请求的页面是内部页面,它也可能依赖于在前一页面中生成的 cookie。
【讨论】:
然而,在这种情况下,他们可能不希望机器人访问他们的网站。如果您的程序不仅仅用于私人用途,您可能需要查看他们的服务条款。以上是关于从我的 Java 程序访问 URL 时出现 HTTP 503 错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Java Jersey Rest:未找到提供程序类。 (访问 URL 时出现 404 错误)
尝试从 Web 应用程序获取数据时出现 Cors 错误(没有“访问控制允许来源”/它没有 HTTP ok 状态。)
尝试从 Docker 访问 ES 实例时出现 SSLHandshakeException
使用 Java spring cloud aws 确认 SNS 通知时出现 InvalidParameterException