簡體   English   中英

調試時獲取HttpWebResponse的內容

[英]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”,所以我不禁對此感到懷疑。

因此,我真正的問題是:如何在HttpWebResponseStream對象中找到“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM