2009-08-24 17 views
1

私が書いている統合テストの一環として、すべての応答データが送信される前に、クライアントのHTTPリクエストが早期に終了すると、サーバが正しく動作することを主張したいと思います。Webリクエストを早期に終了する

HTTPリクエストを作成し、C#でわずか数バイトのデータを受信した後に終了することはできますか?

+1

"*リクエスト*データがすべて送信される前に"という意味ですか? –

+0

いいえ、要求は正常に送信されますが、すべての応答データがサーバーから返される前に接続を終了します。イメージングが完了する前にファイルのダウンロードを停止します。 – Karl

答えて

0

私のために働く解決策が見つかりました。私はちょうどそれを取得した後、応答を閉じます。これは私に応答ヘッダーを残しているようですが、サーバーが送信を完了する前に接続を閉じます。

var response = request.getResponse(); 
response.Close(); 

// Assert that server has dealt with closed response correctly 
0

バックグラウンドワーカーを使用して非同期に呼び出しを開始し、スレッド/チャネルを閉じます。

+0

スレッド/ bgworkerは必要ありません。非同期的に処理したい場合は、WebRequestのBeginGetResponseメソッドとEndGetResponseメソッドを使用することができます。http://msdn.microsoft.com/en-us/library/86wf6409.aspx – Ravi

2

応答のすべてのバイトを読み取る必要はありません。必要なだけ多くのバイトを読み、テストから戻ってください。あなたは便利WebReponse上のドキュメントを見つけることが

Stream myStream = resp.GetResponseStream(); 
myStream.Read(bufferArray, 0, 1); //read 1 byte into bufferArray 
return; 

あなたはこのように、多かれ少なかれ行うことができます。

+0

これはかなりうまく動作します!私の場合、特定の応答データは気にしませんが、ストリームをただちに閉じることはできません。 – Karl

+0

@Karl、あなたは正しい。応答を正確に確認してください。 –

関連する問題