2016-05-06 27 views

答えて

0

HttpClientではなく、HttpWebRequestを使用する必要がありますか?

これらは、非同期の方法と、methodプロパティを設定することによって、postとgetの間で切り替えることができます。

例えば:

var request = (HttpWebRequest) WebRequest.Create(uri); 
request.Method = "POST"; 
var postStream = await request.GetRequestStreamAsync() 
2

使用HttpClient.PostAsync、あなたがHttpResponseMessage.Content.ReadAsStreamAsync()メソッドを介して応答ストリームを取得することができます。

var message = await client.PostAsync(url, content); 
var stream = await message.Content.ReadAsStreamAsync(); 
+0

ストリーム全体がメモリに読み込まれることに注意してください。これは主に、ユーザーがストリーミングを使用する予定のときに期待するものではありません。 – lanwin

1

あなたは、あなたがメモリにストリーム全体を読んでいましたPostAsync原因message.Content.ReadAsStreamAsyncを使用してはならない大規模なデータをストリーミングするためHttpClientを使用したい場合。代わりに、次のコードブロックを使用することができます。

var message = new HttpRequestMessage(HttpMethod.Post, "http://localhost:3100/api/test"); 
var response = await client.SendAsync(message, HttpCompletionOption.ResponseHeadersRead); 
var stream = await response.Content.ReadAsStreamAsync(); 

ここで重要なことは、メモリに全体の内容を読み取ることがないクライアントに指示HttpCompletionOption.ResponseHeadersReadオプションです。

関連する問題