2010-12-10 8 views
0

bing APIを使用していくつかの結果をリクエストしています。コードを実行すると応答文字列が切り捨てられ、最初の10〜50文字が欠落します。ブラウザでリクエストすると、結果は正常に返されます。WPF - Webリクエストが切り捨てられました

ここに私のコードは何ですか?私は間違っていますか?

  string AppId = "My APP ID HERE :O "; 
     string url = "http://api.search.live.net/xml.aspx?Appid={0}&sources={1}&query={2}"; 
     string completeUri = String.Format(url, AppId, "web", validateforweb(Artist) + "%20" + validateforweb(Song) + "%20" + "Lyrics"); 
     HttpWebRequest webRequest = null; 
     webRequest = (HttpWebRequest)WebRequest.Create(completeUri); 
     HttpWebResponse webResponse = null; 
     webResponse = (HttpWebResponse)webRequest.GetResponse(); 
     XmlReader xmlReader = null; 
     Stream s = webResponse.GetResponseStream(); 
     xmlReader = XmlReader.Create(s); 
     StreamReader reader; 
     reader = new StreamReader(s); 
     string str = reader.ReadToEnd(); 
+1

代わりにWebClient.DownloadString()を試してみてください。はるかにクリーンです。また、あまり複雑ではないコードを書くことができます。つまり、エラーは少なくなります。 – decyclone

答えて

2

私はそれはあなたがストリーム(XmlReaderStreamReader)に2人の読者を作成している事実に関連だと思います。 XmlReaderは、ストリームからデータを作成するとすぐにバッファリングを開始します。したがって、StreamReaderが同じストリームからの読み込みを開始すると、XmlReaderによってバッファされたデータの一部が失われます。

同じストリームで2つのリーダーを使用することはできません。それらは互いに競合します。

関連する問題