2010-12-10 40 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个阅读器,它们会相互冲突。