** Mise à jour J'ai une solution ci-dessous, mais elle est plutôt manuelle... s'il y a un moyen plus facile, je préférerais qu'on me réponde.
Je veux enregistrer le temps d'exécution et de téléchargement d'une page web, et j'essaie d'utiliser la méthode WebClient.DownloadDataAsync pour envoyer des données à une page et obtenir un résultat.
Je sais qu'il existe de nombreuses façons d'envoyer des messages en utilisant des objets WebClient ou WebRequest, mais aucune d'entre elles n'envoie l'événement DownloadProgressChanged. Cet événement est essentiel, car je veux suivre la progression du téléchargement, qui est de l'ordre de plus de 30 mégaoctets.
Je pense que la meilleure façon de procéder serait de construire l'en-tête manuellement, mais je me trouve dans une impasse. Principalement, je ne peux pas ajouter les données à la requête.
WebClient client = new WebClient();
//!!!!*****no idea how to add the following data to the request
string data = "test1=value";
client.Headers.Add( "POST", "/About.aspx HTTP/1.1" );
client.Headers.Add( "Host", "http://localhost:12065" );
client.Headers.Add( "Content-Type", "application/x-www-form-urlencoded" );
client.Headers.Add( "Content-length", data.Length.ToString() );
client.DownloadProgressChanged += OnDownloadProgressChanged;
client.DownloadDataCompleted += OnDownloadDataCompleted;
client.DownloadDataAsync( new Uri( "http://localhost:12065/About.aspx" ) );
Je suis ouvert à d'autres solutions, ou à la possibilité de faire fonctionner l'en-tête dans cet exemple comme si le client envoyait un POST.