1

Web サイトに接続して HTML を返す Java プログラムを作成していますが、何らかの理由で問題が発生しています。現在、私はそうしている場合にのみウェブサイトにアクセスできます

 //example     String host = "www.google.com"

しかし、もっと複雑な URL にアクセスしようとすると、UnknownHostException が発生します。最初は、URL の特定の文字が認識されないことに関係があるのではないかと考えましたが、よくわかりません。たとえば、これは私がアクセスしようとしている URL の 1 つです。

host ="http://www.cyberspacei.com/englishwiz/library/name/etymology_of_first_names.htm";
int port = 80;
Socket s = new Socket(host,port)

....等

UnknownHostException 以外は何も返さない。

誰か助けてください!!!

4

4 に答える 4

5

入力しているようなURLではなくホスト名について尋ねられているため失敗しています。そのURLにドキュメントが必要な場合は、URLクラスを使用する必要があります。

URL url = new URL("http://www.thesite.com/thefile.html");
Object doc = url.getContent();

もちろん、その「オブジェクトドキュメント」を、そのコンテンツをキャッシュするために準備されたファイルに置き換える必要があります。

于 2009-10-10T03:52:12.647 に答える
4

Socketオブジェクトの「host」パラメーターは、ネットワーク(インターネット)上で接続するマシンを指定します。これは、プロトコル、サーバー、および要求されているファイルまたはオブジェクトのディレクトリ構造を含むWebブラウザで使用されるURIとは異なります。

Socket s = new Socket( "www.cyberspacei.com"、 "80"); そのマシンで実行されているWebサーバーへの新しいrawソケットを開きますが、そのソケットを介してHTTPプロトコルをネゴシエートし、「/ englishwiz / library / name/etymology_of_first_names.htm」を要求するのはあなた次第です。

httpストリームへの生のアクセスを必要としない限り、httpネゴシエーションから多くのレッグワークを取り除くHttpClientなどのライブラリを使用することで、頭痛の種を減らすことができます。

http://hc.apache.org/httpclient-3.x/index.html

于 2009-10-10T03:54:26.057 に答える
2

私はJavaの分野の専門家ではありませんが、何が悪かったのかはわかっています。

まず、ホスト変数にはURLのホストのみを含める必要があります。

URLのホストhttp://www.cyberspacei.com/englishwiz/library/name/etymology_of_first_names.htmは実際には'cyberspacei.com'

したがって、ホストに接続してから、HTTPヘッダーを送信して、探しているページを要求します。

GET /englishwiz/library/name/etymology_of_first_names.htm HTTP/1.0
Host: cyberspacei.com
Accept: */*
Connection: Close

一部のWebページは、動作するためにヘッダーが必要なUser-Agent場合があります。Refererしたがって、フィールドを適切に追加します。

于 2009-10-10T03:54:27.767 に答える
1

@ONiはここにあります。Socket() クラスを使用しています。つまり、未加工のソケットを使用しており、独自の HTTP/Web サーバー リクエストを記述したいと考えています。そのクラスはHTTPリクエストを「理解」し、Webサイトのコンテンツを提供するだけなので、URLクラスのようなものが必要です。

これは、コンピュータ (URL クラス) から電子メールを印刷して読み取ることと、イーサネット コードを口に突き刺して信号を舌で解読しようとすることの違いのようなものです。Socket() クラスは、あなたがしていることに対して低レベルです。

于 2009-10-10T07:07:14.650 に答える