我需要向服务器发送异步请求,并从响应流中获取信息。我使用的是HttpClient.GetStreamAsync(),但是应该使用POST的服务器响应。有没有类似于PostStreamAsync()的方法?谢谢。
发布于 2018-02-09 20:45:53
如果你想使用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();这里的关键是HttpCompletionOption.ResponseHeadersRead选项,它告诉客户端不要将整个内容读取到内存中。
发布于 2016-05-06 17:20:59
使用HttpClient.PostAsync,可以通过HttpResponseMessage.Content.ReadAsStreamAsync()方法获取响应流。
var message = await client.PostAsync(url, content);
var stream = await message.Content.ReadAsStreamAsync();发布于 2016-05-06 16:17:28
也许你应该使用HttpWebRequest而不是HttpClient?
它们既提供了异步方法,也提供了通过设置method属性在post和get之间切换的可能性。
例如:
var request = (HttpWebRequest) WebRequest.Create(uri);
request.Method = "POST";
var postStream = await request.GetRequestStreamAsync()https://stackoverflow.com/questions/37067355
复制相似问题