web-dev-qa-db-ja.com

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)

どうしましたか?ホストは私をブロックしましたか?

15
rlc

HTTPステータスコード5 は、通常、ウェブサーバーコードがクラッシュしたことを意味します。 HttpURLConnection#getResponseCode() を使用して事前にステータスコードを決定する必要があり、エラーの場合は、代わりに HttpURLConnection#getErrorStream() を読んでください。つまり、問題に関する情報が含まれている場合があります。

ホストがあなたをブロックしている場合は、401または403のような4nnステータスコードを受け取ります。

こちらもご覧ください:

26
BalusC

このステータスコード500は内部サーバーエラーです。このコードは、サーバーの一部(CGIプログラムなど)がクラッシュしたか、構成エラーが発生したことを示しています。

問題はあなたの側にあるのではなく、Httpサーバーの側にあると思います。アクセスに使用したリソースが移動または破損したか、その構成が変更または損なわれた可能性があります。

3
arthur

私はこの問題を抱えていました。つまり、ブラウザに貼り付けると正常に動作しますが、Javaを介して行うと505になります。エスケープ/エンコードする必要があるのは、単にスペースでした。

0
GarethReid

問題は、渡すパラメーターにある必要があります(空のパラメーターを渡す必要があります)。例: http://www.myurl.com?id=5&name= 呼び出しているサーバーでこれを処理しているかどうかを確認します。

0
Prem

私は同じ問題に遭遇し、解決策を見つけました。

最初のサーバー応答内を見て、サーバーからCookieが送信されたかどうかを確認できます。

サーバーからCookieが送信されたかどうかを確認するには、HttpURLConnection#getHeaderFields()を使用して、「Set-Cookie」という名前のヘッダーを探します。

存在する場合は、 問題の解決策はこちらです 100%このケースで動作しています!

うまくいった場合は+1。

0
AMIL.Y