0

HttpRequest を使用して、Web サイトから複数のページを (ループで) ダウンロードしています。単純化すると次のようになります。

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(
            "http://sub.domain.com/something/" + someString
        );

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

//do something

実際にはよくわかりませんが、すべてのリクエストでアドレスが再度解決されるようです(正しいかどうかをテストする方法がわかりません)。少しブーストして、アドレスを一度解決してから、すべてのリクエストで再利用したいと思います。ただし、HttpRequest を強制的に使用させる方法はわかりません。

Dns.GetHostAddresses を使用して、結果を文字列に変換し、アドレスとして HttpWebRequest.Create に渡してみました。残念ながら、サーバーはエラー 404 を返します。おそらく、httpクエリの「ホスト」ヘッダーがサーバーが期待するものと一致しないためです。

これを解決する簡単な方法はありますか?

4

2 に答える 2

2

正直なところ、DNSがまだキャッシュされていないのではないかと思いますが、要求したことを実行する方法はあります。

IPアドレスを使用してリクエストを作成したら、そのリクエストのHostプロパティをDNS名に設定します。これで404の問題が解決するはずです。

複数のリクエストを高速化するのに役立つ可能性があるのは、KeepAliveプロパティをtrueに設定することです。これにより、接続が開いたままになり、毎回接続を再確立しなくても、複数の要求を行うことができます。

于 2010-04-23T14:29:10.477 に答える
1

404は間違いなくサイトの「ホストヘッダー」のためです。1つのIPアドレスで何千ものサイトをホストでき、Webサーバーはドメインを使用して必要なサイトを特定します。

ローカルコンピューターはDNSクエリの結果をキャッシュする必要があるため、ドメインにアクセスするたびに要求が生成されますが、ローカルにキャッシュされたルックアップ結果を使用するだけで、要求は最初からコンピューターから離れることはありません。

于 2010-04-23T14:31:03.613 に答える