java.io.IOException:服务器返回 HTTP 响应代码:500
我在使用 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)
出了什么问题?楼主屏蔽我了吗?
I'm facing this problem with Java. I want to get some HTML informations from a URL. This code was working for so long, but suddenly, it stopped working.
When I access this URL using the browser, it opens with no problem.
The code:
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();
The Exception:
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)
What's wrong? Did the host block me?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
HTTP 状态代码 500 通常表示网络服务器代码已坠毁了。您需要预先使用
HttpURLConnection#getResponseCode()
,如果出现错误,请阅读HttpURLConnection#getErrorStream()
代替。它可能包含有关问题的信息。如果主机阻止了您,您宁愿获得 401 或 403 等 4nn 状态代码。
另请参阅:
HTTP status code 500 usually means that the webserver code has crashed. You need to determine the status code beforehand using
HttpURLConnection#getResponseCode()
and in case of errors, read theHttpURLConnection#getErrorStream()
instead. It may namely contain information about the problem.If the host has blocked you, you would rather have gotten a 4nn status code like 401 or 403.
See also:
此状态代码 500 是内部服务器错误。此代码表示服务器的一部分(例如,CGI 程序)已崩溃或遇到配置错误。
我认为问题不在你这边,而在Http服务器那边。
您用来访问的资源可能已被移动或损坏,或其配置可能已更改或损坏
This Status Code 500 is an Internal Server Error. This code indicates that a part of the server (for example, a CGI program) has crashed or encountered a configuration error.
i think the problem does'nt lie on your side, but rather on the side of the Http server.
the resources you used to access may have been moved or get corrupted, or its configuration just may have altered or spoiled
我遇到了这个问题,即粘贴到浏览器中时工作正常,但通过 java 完成时则为 505。这只是需要转义/编码的空格。
I had this problem i.e. works fine when pasted into browser but 505s when done through java. It was simply the spaces that needed to be escaped/encoded.
问题一定出在您传递的参数上(您必须传递空白参数)。例如: http://www.myurl.com?id=5&name=
检查您是否正在调用的服务器上处理此问题。
The problem must be with the parameters you are passing(You must be passing blank parameters). For example : http://www.myurl.com?id=5&name=
Check if you are handling this at the server you are calling.
将内容类型更改为“application/x-www-form-urlencoded”,我解决了问题。
Change the content-type to "application/x-www-form-urlencoded", i solved the problem.
您可以查看第一个服务器响应并查看服务器是否向您发送了 cookie。
要检查服务器是否向您发送了 cookie,您可以使用 HttpURLConnection#getHeaderFields() 并查找名为“Set-Cookie”的标头。
如果存在,这是您问题的解决方案。 100%为这个案子而努力!
You may look within the first server response and see if the server sent you a cookie.
To check if the server sent you a cookie, you can use HttpURLConnection#getHeaderFields() and look for headers named "Set-Cookie".
If existing, here's the solution for your problem. 100% Working for this case!
就我而言,我已将内容类型更改为接受,它解决了问题。
In my case, I had changed the Content-Type to Accept and it resolved the issue.