我有一個應用程序,在將文件發佈到服務器後,服務器定期向客戶端應用程序返回有關響應中升級過程的消息。定期從任務<Stream>讀取Http PostAsync響應內容返回
我曾經有過代碼,看起來像
using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse())
{
using (Stream responseStream = httpResponse.GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
while(!streamReader.EndOfStream)
{
var str = streamReader.ReadLine();
// Do something with str
}
}
}
}
更新我的代碼,以利用HttpClient
類,我苦苦尋找的,將做相同的代碼上面的方法後。
var response = client.PostAsync(uploadUrl, content).Result;
var stream = response.Content.ReadAsStreamAsync().Result;
var streamReader = new StreamReader(stream);
// Superfluous due to the fact we are already at end of stream
while(!streamReader.EndOfStream)
{
var str = streamReader.ReadLine();
// Do something with str
}
如果我嘗試像上述那我們等到整個流已恢復這一切一氣呵成由於使用response.Content.ReadAsStreamAsync().Result
調用之前填充。這是不合適的,因爲我希望從服務器返回時實時顯示信息。
是否有可能定期從流中讀取,如上面的示例中所示,當我們有一個Task<Stream>
對象時?
輝煌,這將清除了。乾杯 –