2010-12-10 43 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 2010-12-10 19:07:46

回答

2

我懷疑這是關係到你在流(XmlReaderStreamReader)創建2個讀者的事實。 XmlReader開始從流中緩存數據,因此當StreamReader開始從同一個流中讀取數據時,它會錯過XmlReader緩衝的部分數據。

您不能在同一個流中使用2個閱讀器,它們會相互衝突。