2010-04-07 2 views
1

J'ai le code suivant qui envoie un HttpWebRequest à Bing. Lorsque je demande l'URL ci-dessous, elle renvoie ce qui semble être une réponse vide alors qu'elle devrait renvoyer une liste de résultats.HttpWebRequest a une réponse vide demandant une recherche à partir de Bing

var response = string.Empty; 
var httpWebRequest = WebRequest.Create("http://www.bing.com/search?q=stackoverflow&count=100") as HttpWebRequest; 

httpWebRequest.Method = WebRequestMethods.Http.Get; 
httpWebRequest.Headers.Add("Accept-Language", "en-US"); 
httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Win32)"; 
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); 

using (var httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse) 
{ 
    Stream stream = null; 
    using (stream = httpWebResponse.GetResponseStream()) 
    { 
     if (httpWebResponse.ContentEncoding.ToLower().Contains("gzip")) 
      stream = new GZipStream(stream, CompressionMode.Decompress); 
     else if (httpWebResponse.ContentEncoding.ToLower().Contains("deflate")) 
      stream = new DeflateStream(stream, CompressionMode.Decompress); 

     var streamReader = new StreamReader(stream, Encoding.UTF8); 
     response = streamReader.ReadToEnd(); 
    } 
} 

Son joli code standard pour demander et recevoir une page Web. Des idées pour lesquelles la réponse est vide? Merci d'avance.

EDIT J'ai omis un paramètre de chaîne de requête dans l'URL. J'ai également eu & compte = 100 que j'ai maintenant corrigé. Il semble fonctionner pour des valeurs de 50 et moins mais ne renvoie rien quand il est plus grand. Cela fonctionne bien dans le navigateur, mais pas pour cette requête web. Il me semble que le problème est que la réponse est grande et HttpWebResponse ne gère pas cela pour moi comme je l'ai configuré. Juste une supposition cependant.

Répondre

1

Cela fonctionne très bien sur ma machine. Peut-être que vous êtes banni IP de Bing?

+0

Merci Janvier Je peux rechercher Bing en utilisant un navigateur, donc je ne suis pas banni. –

+0

Avec & count = 100, aucun résultat ne s'affiche dans mon navigateur ni dans l'application. Donc, il y a la capture. Essayez cette bibliothèque: http://thibautvs.com/blog/?p=643 –

1

Votre code fonctionne correctement sur mon ordinateur.

Je vous suggère de vous procurer une copie de Fiddler et d'examiner la session HTTP réelle qui se produit. Peut être un proxy ou un pare-feu.

+0

Merci pour votre réponse. J'ai laissé le paramètre de chaîne de requête count pour l'URL. Je l'ai fait mettre à compter = 100. –

Questions connexes