0

私は風変わりな問題を抱えています。WebRequest と WebClient を使用して Web サイトへのアクセスを自動化しようとしています。すべての投稿リクエスト ヘッダーのキーと値のペアと投稿されたデータ文字列を Firebug (リクエスト ヘッダーと投稿タブ) で観察しました。次に、そのようなリクエストを WebRequest でシミュレートし、すべてのヘッダー パラメーターと投稿されたデータをそこに配置しました。ただし、このリクエスト インスタンスから GetResponse() を実行すると、いくつかのセッション ID が不足しているというエラー ページが返されます。

実際には、以前 (ログオン ページを開くための最初のステップ) に応答したセッション Cookie を要求のヘッダーの Cookie フィールドに入れるように注意しました。そして、ログオン ページ (1 ページ目) の要求をシミュレートすることで正しい応答を返すことができますが、この認証ページを通過できません。私の投稿データは userid=John&password=123456789&domain=highmark のようなもので、ブラウザからの認証ページリクエストは毎回成功しています。

firebug によって表示されない可能性のあるリクエストに何か不足していますか? はいの場合、ブラウザから送信されたリクエスト全体を調べることができるツールの推奨事項を教えてください。

4

1 に答える 1

0

私はこの問題を解決しました。問題は、httpWebRequest インスタンスの AllowAutoRedirect=true を設定したことです。したがって、サーバーから最初の応答を受け取ったとき、httpWebRequest は、応答ヘッダーの Location フィールドで応答される別の URL を要求する別の要求を継続的に作成します。

HttpWebRequest クラスの欠陥は、リダイレクトされたときに、次のリクエスト ヘッダーに Set-Cookies(Response's Header Field) の Cookie が含まれていないため、サーバーはそのようなページ リクエストを拒否し、別の別のページに再度リダイレクトする可能性があることです。 .

また、httpWebRequest.GetResponse() メソッドは、AllowAutoRedirect=true の設定で最後に応答されたページのみを返します。すると、思っていたのとは全く違う反応が返ってきました。

また、この問題を解決する過程で、HTTP トラフィックを調べるツールであるIEInspector Http Analyzer (http://www.ieinspector.com/httpanalyzer/) に感謝する必要があります。このツールの優れた機能は、ブラウザからの http トラフィックだけでなく、プロセスの httpWebRequest が何を行ったかを調べることができることです。また、それらのリクエストとレスポンスの生ストリームをテキスト形式で表示することもできます。商用ソフトウェアですが、15日間お試しいただけます。私はそれが私に教えてくれること(整形式の詳細で)に非常に満足しており、私もそれを購入するのが好きです.

于 2012-06-05T17:49:34.957 に答える