Lorsque vous utilisez le System.Net.WebClient.DownloadData() méthode J'obtiens un temps de réponse déraisonnablement lent.
Lorsque je récupère une URL à l'aide de la classe WebClient dans .NET, il faut environ 10 secondes pour obtenir une réponse, alors que la même page est récupérée par mon navigateur en moins d'une seconde. Et ce, avec des données d'une taille égale ou inférieure à 0,5 Ko.
La demande implique des paramètres POST/GET et un en-tête d'agent utilisateur si cela peut poser des problèmes.
Je n'ai pas (encore) essayé si d'autres façons de télécharger des données dans .NET me donnent les mêmes problèmes, mais je soupçonne que je pourrais obtenir des résultats similaires. (J'ai toujours eu l'impression que les requêtes web en .NET sont inhabituellement lentes...)
Quelle pourrait en être la cause ?
Edit :
J'ai essayé de faire exactement la même chose en utilisant System.Net.HttpWebRequest
à la place, en utilisant la méthode suivante, et toutes les demandes se terminent en moins d'une seconde.
public static string DownloadText(string url)
var request = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
}
Alors que cette (ancienne) méthode utilisant System.Net.WebClient
Il faut 15 à 30 secondes pour que chaque demande soit traitée :
public static string DownloadText(string url)
{
var client = new WebClient();
byte[] data = client.DownloadData(url);
return client.Encoding.GetString(data);
}
0 votes
En rapport : stackoverflow.com/questions/4932541