2016-08-04 7 views
0

返されるデータの変更を記録するために10秒ごとにWeb API URLへの順次要求を実行しようとしています。デバッグ中にHttpWebResponseの内容を取得する

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(); 
} 

すべての今してXML文書がひどくフォーマットされているというメッセージをdeserialiationを実行している場合と、InvalidOperationExceptionがスローされます。コードスニペットは次のようになります。問題を特定するために、私はautos/locals/watchビューを使ってデバッグモードで "生の"応答コンテンツを見つけようとしていますが、本当にそれを見つけることはできません。

私はレスポンスヘッダーと他の多くの情報を見つけることができます。私が見る限り、これは1つの例外を除いて大丈夫です。 content-lengthは-1を示します。私はこれが本当に気にしなければならないのかどうかはわかりませんが、私はそれを疑ってもらえませんでした。

私の本当の疑問は、HttpWebResponseまたはStreamオブジェクトの中の「ボディ」をどのように見つけることができますか?

そして、副次的な質問:値-1のコンテンツ長は気にするものですか?

+0

のデバッグ中に、あなたが内容を見ることができるはずですか? –

+0

こんにちは、私はこのYQL URLに対してPOCを実行します:https://query.yahooapis.com/v1/public/yql?q=select%20Name%2C%20Ask%20from%20yahoo.finance.quotes%20where%20symbol% 20%(%22MSFT%22)&diagnostics = true&env =ストア%3A%2F%2Fdatatables.org%2Falltableswithkeysこれは応答の形式と内容ですが、例外が発生したときの実際のレスポンスは不明です。それは私がデバッグモードで見つけたいと思っているものです。 – Anders

+0

応答ストリームは出力用ですが、なぜそれを入力用に使用していますか? – Jonny

答えて

1

あなたは、ストリームからの全体の内容を読んで、それをデシリアライズする前に変数に格納した場合、あなたのXML文字列を投稿できる

0

デバッグでは、私はあなたが文字列に応答を複製することをお勧めします。

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())が呼び出されます。この場合、ストリームは単独でストリームを閉じます。

関連する問題