0

今日、ページから情報を取得し、必要なものを返す Java RMI サーバー (およびクライアント) を開発しています。ここにコードを配置しました。問題は、私がメソッドに渡す URL が、指定された URL が 503 HTTP エラーを起こすことを示す IOException をスローすることがあることです。いつもそうだったら楽かもしれませんが、たまに出てくるのが難点です。私が解析するページは気象会社のものであり、1 つの都市だけでなく多くの都市からの情報が必要なため、このメソッド構造を使用しています。そのため、最初のチャンスで完全に機能する都市もあれば、失敗する都市もあります。助言がありますか?

public ArrayList<Medidas> parse(String url){
        medidas = new ArrayList<Medidas>();
        int v=0;

            String sourceLine;
            String content = "";
        try{
            // The URL address of the page to open.

            URL address = new URL(url);

            // Open the address and create a BufferedReader with the source code.
            InputStreamReader pageInput = new InputStreamReader(address.openStream());
            BufferedReader source = new BufferedReader(pageInput);

            // Append each new HTML line into one string. Add a tab character.
            while ((sourceLine = source.readLine()) != null){
                if(sourceLine.contains("<tbody>")) v=1;
                else if (sourceLine.contains("</tbody>"))
                    break;
                 else if(v==1)
                    content += sourceLine + "\n";
            }
       ........................
       ........................  NOW THE PARSING CODE, NOT IMPORTANT
   }
4

2 に答える 2

0
  1. IOException が実際に MalformedURLException ではないことを確認してください。URL を印刷して、不適切な URL が IOException の原因ではないことを確認してください。
  2. 解析しているファイルのサイズは? JVM のメモリが不足している可能性があります。
于 2013-03-28T01:02:07.300 に答える
0

HTTP 500 エラーはサーバー エラーを反映しているため、クライアント コードとは関係がない可能性があります。リクエストで無効なパラメータを渡すと、400 エラーが発生します。

503 は「サービスを利用できません」であり、過負荷でリクエストを処理できない場合にサーバーから送信される可能性があります。一般にアクセス可能なサーバーから、それが不規則な動作を説明する可能性があります。

編集

503 を検出したら、コードで再試行ハンドラーを作成します。Apache HTTPClientは、これを自動的に行うことができます。

HTTP ステータス コードのリスト

于 2013-03-28T06:38:45.287 に答える