leo*_*eng 6 c# asynchronous stream httpclient
我需要向服务器发送异步请求并从响应流中获取信息.我正在使用HttpClient.GetStreamAsync(),但应该使用POST的服务器响应.是否有类似PostStreamAsync()的方法?谢谢.
如果要HttpClient用于流传输大数据,则不应使用,PostAsync因为message.Content.ReadAsStreamAsync它将整个流读入内存。相反,您可以使用以下代码块。
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();
Run Code Online (Sandbox Code Playgroud)
这里的关键是HttpCompletionOption.ResponseHeadersRead告诉客户端不要将整个内容读入内存的选项。
小智 -2
也许您应该使用HttpWebRequest而不是 HttpClient ?
它们提供了异步方法以及通过设置其属性在 post 和 get 之间切换的可能性method。
例如:
var request = (HttpWebRequest) WebRequest.Create(uri);
request.Method = "POST";
var postStream = await request.GetRequestStreamAsync()
Run Code Online (Sandbox Code Playgroud)