2010-12-10 61 views
0

J'utilise l'API bing pour demander des résultats .. quand j'exécute mon code la chaîne de réponse est tronquée de sorte qu'il lui manque les 10-50 premiers caractères .. quand je colle le même demande dans le navigateur, il renvoie les résultats très bien ..WPF - Demande Web en cours de troncature

Voici mon code .. qu'est-ce que je fais mal?

  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

Pourquoi ne pas essayer WebClient.DownloadString() à la place. C'est beaucoup plus propre. Et vous permettra d'écrire du code moins complexe. Cela signifie moins d'erreurs. – decyclone

Répondre

2

Je soupçonne que c'est lié au fait que vous créez 2 lecteurs sur le flux (XmlReader et StreamReader). Le XmlReader commence à mettre en mémoire tampon les données du flux dès que vous le créez. Lorsque le StreamReader commence à lire à partir du même flux, la partie des données qui a été mise en mémoire tampon par le XmlReader est ignorée.

Vous ne pouvez pas utiliser 2 lecteurs sur le même flux, ils seront en conflit les uns avec les autres.