[英]Get content of HttpWebResponse while debugging
我正在嘗試每10秒對Web api URL運行一次順序請求,以記錄返回數據中的更改。 該代碼段如下所示:
using (Stream objStream = response.GetResponseStream())
{
query result = (query)serializer.Deserialize(objStream);
Console.WriteLine(result.results.quote.Name + " " + result.results.quote.Ask);
objStream.Flush();
objStream.Close();
}
運行反序列化時,時不時地會拋出InvalidOperationException,並帶有表示XML文檔格式錯誤的消息。 為了解決問題,我嘗試使用autos / locals / watch視圖在調試模式下找到“原始”響應內容,但我確實找不到它。
我可以找到響應頭和許多其他信息,據我所知,除了一個例外,它看起來還可以。 顯示-1的內容長度。 我不確定這是否是我真正應該關心的事情,但是由於我找不到響應“ body”,所以我不禁對此感到懷疑。
因此,我真正的問題是:如何在HttpWebResponse
或Stream
對象中找到“ body”?
另一個問題是:值-1的內容長度是否值得困擾。
如果您從流中讀取全部內容並將其存儲在反序列化之前的變量中,則應該能夠在調試時看到內容
對於調試,我建議您將響應復制到字符串中,然后觀察它。
using (Stream objStream = response.GetResponseStream())
{
StreamReader sr = new StreamReader(objStream);
string response = sr.ReadToEnd();
objStream.Seek(0,SeekOrigin.Begin); // Get the pointer back to the begining.
query result = (query)serializer.Deserialize(objStream);
Console.WriteLine(result.results.quote.Name + " " + result.results.quote.Ask);
objStream.Flush(); // remove
objStream.Close();//remove
}
我也建議刪除:objStream.Flush(); objStream.Close();
當使用'using'語句時,它調用Dispose()(IDisposable()),這將最終關閉流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.