2

この質問は少しレベルが低すぎるかもしれませんが、私はまだ答えを見つけることができませんでした.

この次の段落を入力しているのは、あなたが私を訂正したり、私が無意識のうちに参照していることを説明したりできるようにするためです. Web ブラウザーで自分のコンピューターからのディレクトリ パスを入力すると、それらが表示されることをご存知ですか? どうやら、ローカル ネットワーク内のページでも動作するようです。同じサブネット上に別のページがある場合は、「http://pagename/」でアクセスできます。

私が参加しているネットワークには、これらのページがたくさんあり、それらのすべて (またはほとんど) には、 "http://word/" などの一般的な単一の単語の名前が付いています。Java を使用して、ネットワーク上の場所として存在する一般的な単語の辞書をテストしたいと考えています。もちろん、ネットワーク上の IP アドレスの範囲を知っていれば、おそらくもっと簡単な方法があります。ただし、たとえば「http://word/」(ping から取得したもの) の IP アドレスをアドレス バーに入力しようとすると、「ページが見つかりません」というページが表示されます。これは、「http://word/」が機能する場合でも当てはまります。

単語バンクをループするとします。URL が本物かどうかをテストするにはどうすればよいですか? ワードバンクをロードする方法を考え出しました。これが私が今持っているものです

 URL article=new URL("http://word");  //sample URL
 URLConnection myConn=article.openConnection();
 Scanner myScan=new Scanner(new InputStreamReader(myConn.getInputStream()));
    System.out.println(myScan.hasNext());  //Diagnostic output

これは、URL が有効な URL で構成されている場合に機能します。不正な URL が渡されると、プログラムは を無視しSystem.out.println、改行すらしません。さまざまなブラウザーがさまざまな「ページが見つかりません」画面を表示し、これらには独自の html ソース コードがあることを知っています。多分それは私の問題に関連していますか?

この方法を使用して URL が本物かどうかをテストするにはどうすればよいですか? 私の問題を考えると、IPアドレスでテストする方法はありますか? または、URL ではなく IP アドレスの入力に問題があるのはなぜですか?

4

3 に答える 3

3

HTTP応答コードを確認する必要があります。URLが(あなたの用語で)「本物」である場合、応答コードは200である必要があります。そうでない場合、他の応答コードを取得すると思います。

HttpUrlConnection.getResponseCode();を使用して実行します。

HttpUrlConnectionは、URLConnectionのサブクラスです。あなたが実際にあなたが得るものであるHTTPに接続しているとき、あなたopenConnection()は言うことができます:

URL article = new URL( "http:// word"); //サンプルURLHttpURLConnectionmyConn =(HttpURLConnection)article.openConnection();

于 2010-12-08T07:38:32.350 に答える
0

私はそれを理解したと思います。

このコードは、(URL、URLConnection、および Scanner が原因で) IOException をキャッチしないとコンパイルできないため、try{/*code*/} catch(IOException oops){}何もしませんでした。質問に try/catch を入れることが重要だとは思いませんでした。UnknownHostException と MalformedURLException は IOException を拡張するため、私はすでに無意識のうちに withScanner.hasNext()または withでそれらの 1 つをトリガーしHttpURLConnection.getResponseCode()、それをキャッチして、try ブロックを終了していました。したがって、URL が正しくない場合、応答コードを受け取ることはありませんでした。だから私は書く必要があります

        try
                {
                    URL article=new URL("http://word");
                    HttpURLConnection myConn=(HttpURLConnection)article.openConnection();
                    //code to store "http://word" as a working URL
                }
        catch (UnknownHostException ex) {/*code if "http://word" is not a working URL*/}
        catch (IOException oops) {oops.printStackTrace();}

みんなの助けのおかげで、私は多くのことを学びました。別の/より良い答えがある場合、またはIPアドレスの使用が機能しなかった理由に答えることができる場合、私はまだそれを疑問に思っています.

于 2010-12-08T19:19:40.110 に答える
0

http URL のみをテストする場合は、URLConnection を HTTPUrlConnection にキャストし、HTTP 応答コードで 200 = HTTP_OK を確認できます。

URL article=new URL("http://word");  //sample URL
HttpURLConnection myConn= (HttpURLConnection)article.openConnection();
if (myConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    // Site exists and has valid content
}

さらに、IP アドレスをテストする場合は、単純に URL として使用します: http://10.0.0.1

于 2010-12-08T08:28:53.400 に答える