2

プログラムで HTTP ポストを送信する必要がある Web アプリケーション (制御できない) があります。現在、私はHttpWebRequestを次のように使用しています

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://someserver.com/blah/blah.aspx");

ただし、アプリケーションは、データへの投稿時に「不明なサーバー エラー (IIS エラーではなく、カスタム アプリケーション エラー ページ)」を返していました。Fiddler を使用して Post と IE の投稿を比較すると、唯一の違いはリクエストの POST 行にあることがわかります。

Internet Explorer Fiddler (RAW ビュー) でトラフィックを表示

POST /何とか/何とか.aspx HTTP/1.1

私のC#プログラムのフィドラー(RAWビュー)では、トラフィックを次のように記録します

POST https://someserver.com/blah/blah.aspx HTTP/1.1

これは、両方の要求の違いだけです。

私がこれまでに調査したことから、HttpWebRequest.Create に相対 URL を投稿させる方法はないようです。まだ絶対 URL を使用して行われている (HTTP トラフィックをスニッフィングする場合)

相対 URL を使用してこの投稿を行う最も簡単な方法は何ですか?

(トラフィックはプロキシを経由しません)

更新: 当分の間、上記の方法ではなく、スケジュールされたパフォーマンス テストを行うために IE 自動化を使用しています。ブラウザなしでテストしたかったので、別のスクリプト言語を検討するかもしれません。

4

1 に答える 1

0

いいえ、サーバーなしで URL に POST を実行することはできません。

プログラムが失敗する理由として考えられるのは、正しいプロキシを使用せず、結果としてサーバー名を解決できない場合です。

注: Fiddler は、話しているビューでパスとホストを別々に表示します。

Fiddler をプロキシ (127.0.0.1:8888) として使用するようにプログラムを構成し、作成している要求をブラウザーの要求と比較します。Fiddler を「すべてのプロセスを表示」に切り替えることを忘れないでください。

C# コードを含むさまざまなタイプの環境用に Fiddler を構成する方法に関する記事は次のとおりです: Fiddler: クライアントの構成

objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Proxy= new WebProxy("127.0.0.1", 8888); 
于 2012-04-19T05:48:22.073 に答える