WebRequest中にリダイレクトが発生するかどうかを判断する方法はありますか?
-
06-07-2019 - |
質問
Wikipedia.orgをスクレイピングするためにHttpWebRequestを使用しています。多くの場合、統合されたページ上のトピックへのリンクがあるため、正しいページにリダイレクトされます。
たとえば
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union_(after_1939)
正しいトピックにリダイレクトされます
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_the_Soviet_Union_(after_1939)
「the」という単語の追加に注意してください。
この時点で、リダイレクトが発生したかどうかを判断する必要があります。誰も私がこれを行う方法を提案できますか?
ありがとう!
更新
技術的にはリダイレクトされたかどうかを判断する方法であるため、以下の回答に回答済みのマークを付けました。私が抱えている問題は、Wikipediaが実際にhttp応答コード3xxでハードリダイレクトを行っていないことです。同じURLで異なるコンテンツを提供するソフトリダイレクトを行っています。別の解決策を見つける必要があります。
解決
これを試してください:
if(reponse.ResponseUri != request.RequestUri) {
//You were redirected
}
他のヒント
" AllowAutoRedirects " HttpWebRequestオブジェクト。これをオフにすると、リダイレクトを自分で追跡できます。
HttpWebResponseを確認することもできます。 ResponseUri 。
HttpWebRequest.Address を使用しますプロパティは、「リクエスト中に発生したリダイレクトが完了した後のURI」として明示的に定義されています
同様の HttpWebResponse.ResponseUri 、ドキュメントに記載されているとおり:
最後にリダイレクトされたResponseUriにアクセスする必要があるアプリケーション HttpWebRequest .. :: .. Address プロパティではなく ResponseUri。ResponseUriプロパティを使用するとセキュリティが開かれる可能性があるため 脆弱性。