2012-04-19 8 views
2

私はWebアプリケーションを持っています(これは私が制御できません)。プログラムにHTTPポストを送る必要があります。アプリケーションは、「不明なサーバーエラー(IISのエラー、カスタム・アプリケーション・エラー・ページがない)」のデータへの投稿返していましたが現在、私はC#.NETの部分URL付きのHttp Post

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

ようにHttpWebRequestの使用してきました。私は唯一の違いを見ることができますIEのポスト対私のポストを比較するフィドラーを使用すると、リクエストのPOSTラインである:Internet Explorerのフィドラー(RAWビュー)で

は/blah/blah.aspx HTTPトラフィック

POSTを示しhttps://someserver.com/blah/blah.aspx HTTP/1.1

これは、両方の両方の要求との唯一の違いであるPOST

として/1.1私のC#プログラムのシオマネキ(RAWビュー)で

は、トラフィックを記録します。

これまでに研究してきたことから、HttpWebRequest.Createに相対URLを投稿する方法はないようです。注:「相対URLの使い方」については多くの投稿がありますが、これらの提案は機能しません。実際の投稿はまだ絶対URLを使用して行われます(HTTPトラフィックを盗聴するとき)

この投稿を相対URLで達成する最も簡単な方法は何ですか?

(トラフィックがプロキシ経由で行くのではありません)

更新:時間のために私は上記の代わりの方法で、予定さPERFテストを行うためにIEの自動化を使用していますされています。私はブラウザなしでテストしたいと思ったので、別のスクリプト言語を見るかもしれません。

+0

フィドラーズ・RAWビューは関係なく、常に彼らがそこに含まれていたかどうかの、要求行のプロトコルとホストを示しています

は、ここでC#コードを含む環境の異なるタイプのためのバイオリン弾きの設定についての記事です。クライアントは、暗号化されたトンネルの内部ではなく、(Fiddlerのような)プロキシと通信していることを知っている場合、要求ラインで常にこれらを送信することが期待されます。リクエスト間には他の違いがあるはずです。 – EricLaw

答えて

0

いいえ、サーバーにURLがないとPOSTを実行できません。

プログラムが失敗する理由の1つは、適切なプロキシを使用していないため、結果としてサーバー名を解決できない場合です。

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

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

objRequest = (HttpWebRequest)WebRequest.Create(url); 
objRequest.Proxy= new WebProxy("127.0.0.1", 8888); 
+0

お返事ありがとうございます。私が提供した詳細は、Fiddler RAWビューからのものです。 IE経由でページを読み込むとき、 "POST"は "未加工"ビューで完全なURLを使用しません。私のコードは、同じサイト上のいくつかの他のページで動作するので、プロキシは問題ではありません。私はまた成功したいくつかの "POST"を行います。私は制御できないサーバー上に1つのページしかありません。これは相対URLのPOSTを受け入れます(IEが送信するとき)。WebRequestはこれを行うことができないようですが、別の方法のために。もし私が.NETを使用すると、私はHTTP requestw/o WebRequest(とHTTPS)を作成する必要があります。 –

+0

これは本質的に私は相対URLを使ってHTTPSに投稿する必要があります。現時点では.NETで認識できませんが、代替のスクリプト言語を探すかもし​​れませんが、一部のページの読み込み時にスケジュールされたperfテストを実行するだけです。フォームに投稿すると、実行するために展開できる必要がありますXPおよびWin7マシンでは、必要なソフトウェアをインストールする必要はありません。 –

+0

いいえ、考えられません。もっとランダムなものを試してみてください:リクエストには常にサーバーが含まれています - ブラウザーからのリクエストについては、ビューに "Host:XXXXXX"ヘッダーが表示されていることを確認してください。ブラウザがHTTPSリクエストを行っているかどうかを確認し、コードから他のHTTPSページを投稿/取得できるかどうかを確認します。 Fiddlerを使って - "Composer"ビューで作業するプログラムのリクエストをハックしようとする - どのパートがリクエストを失敗させるかを確認する。 –

関連する問題