18

我正面临Java的这个问题。我想从 URL 中获取一些 HTML 信息。这段代码工作了很长时间,但突然间,它停止了工作。

当我使用浏览器访问此 URL 时,它可以毫无问题地打开。

编码:

URL site = new URL(this.url);
java.net.URLConnection yc = site.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
String objetivo = "<td height=\"28\" colspan=\"2\"";
while ((inputLine = in.readLine()) != null && !inputLine.contains(objetivo)) {
}
inputLine = in.readLine();

例外:

java.io.IOException: Server returned HTTP response code: 500 for URL: http://www.myurl.com
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at Sites.websites.Site1.getData(Site1.java:53)
    at util.Util.lerArquivo(Util.java:278)
    at util.Util.main(Util.java:983)

怎么了?楼主有没有屏蔽我?

4

6 回答 6

30

HTTP 状态码 500通常意味着网络服务器代码已经崩溃。您需要事先确定状态码HttpURLConnection#getResponseCode(),如果出现错误,请HttpURLConnection#getErrorStream()改为阅读。它可能即包含有关问题的信息。

如果主机阻止了您,您宁愿获得 4nn 状态代码,例如 401 或 403。

也可以看看:

于 2010-08-07T22:26:47.310 回答
4

此状态码 500 是内部服务器错误。此代码表示服务器的一部分(例如,CGI 程序)已崩溃或遇到配置错误。

我认为问题不在于你,而在于 Http 服务器。您用来访问的资源可能已被移动或损坏,或者其配置可能已更改或损坏

于 2011-07-23T19:26:31.637 回答
1

我遇到了这个问题,即粘贴到浏览器时工作正常,但通过 java 完成时出现 505s。这只是需要转义/编码的空间。

于 2015-11-18T23:55:01.060 回答
1

问题必须与您传递的参数有关(您必须传递空白参数)。例如:http://www.myurl.com?id=5&name= 检查您是否正在调用的服务器上处理此问题。

于 2019-02-13T10:51:39.557 回答
0

您可以查看第一个服务器响应,看看服务器是否向您发送了 cookie。

要检查服务器是否向您发送了 cookie,您可以使用 HttpURLConnection#getHeaderFields() 并查找名为“Set-Cookie”的标头。

如果存在,这是您的问题的解决方案。100% 为这个案子工作!

于 2014-10-03T00:16:17.043 回答
0

将内容类型更改为“application/x-www-form-urlencoded”,我解决了问题。

于 2016-09-25T08:33:21.560 回答