我需要向服務器發送異步請求,並從響應流中獲取信息。 我正在使用HttpClient.GetStreamAsync(),但應該使用POST的服務器響應。有沒有像PostStreamAsync()類似的方法?謝謝。c#:如何發佈異步請求,並與httpclient獲取流?
4
A
回答
0
而不是HttpClient,也許你應該使用HttpWebRequest?
它們提供了異步方法,並且可以通過設置method
屬性來在後期切換。
e.g:
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();
1
如果你想使用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
選項用於告訴客戶不讀取整個內容到內存中。
相關問題
- 1. 異步HttpClient請求減慢
- 2. 如何將同步發佈請求轉換爲異步發佈請求?
- 3. 如何向HttpClient發送發佈請求
- 4. 使用FormCollection中的數據製作異步HttpClient發佈請求
- 5. Windows Phone C#異步獲取https請求
- 6. 獲取異步請求
- 7. 如何在執行期間確定來自異步httpclient的併發請求數?
- 8. VB.NET Winsock HTTPS發佈並獲取請求
- 9. 發佈請求並獲取響應robotframework
- 10. 發佈JSONObject並獲取JSONArray請求Volley
- 11. 發佈並在asp.net中獲取請求
- 12. Yii2中如何獲取/發佈請求?
- 13. 如何獲取發送API請求並獲取Json響應c#
- 14. 使用HttpClient實現的發佈/獲取請求
- 15. 如何使jquery異步/並行請求?
- 16. C#HttpClient POST'ing異步
- 17. 如何使用objective-c中的參數發送異步發佈請求?
- 18. 如何發送異步URL請求?
- 19. Guzzle如何發送異步Web請求?
- 20. 如何發送C++ winsock獲取請求?
- 21. 如何重寫ajax獲取請求以發佈請求(jquery)?
- 22. C#HttpClient的異步POST請求任務不返回
- 23. 在Riotjs Ajax異步獲取請求
- 24. 多個異步http獲取請求
- 25. 在jquery中的異步請求(獲取)
- 26. XML請求與HttpClient拋出空異常
- 27. c#異步http請求
- 28. 異步json請求Objective C
- 29. Objective-C異步http請求
- 30. C#HttpClient POST請求
請注意,這會將整個流讀入內存。這大多不是用戶計劃使用流媒體時所期望的。 – lanwin