132 votes

WebClient vs HttpWebRequest/HttpWebResponse

Il me semble que la plupart de ce qui peut être accompli avec HttpWebRequest/Response peut également être accomplie avec l' WebClient classe. J'ai lu quelque part qu' WebClient est un wrapper de haut niveau pour WebRequest/Response.
Jusqu'à présent, je ne peux pas voir tout ce qui peut être accompli avec HttpWebRequest/Response qui ne peut être accomplie avec WebClient,, ni d'où HttpWebRequest/Réponse vous donnera plus "fine".

Quand devrais-je utiliser le client web et lors de l' HttpWebRequest/Response? (Évidemment, HttpWebRequest/Response sont HTTP spécifique.)

Si HttpWebRequest/Response sont de niveau inférieur alors WebClient, ce que je peux le faire avec des HttpWebRequest/Response que je ne peux pas le faire avec des WebClient?

86voto

Thomas Levesque Points 141081

À l'aide de HttpWebRequest vous donne plus de contrôle sur la demande. Vous pouvez paramétrer les cookies, les en-têtes de protocole, etc... Dans la réponse, vous pouvez également récupérer les cookies et les en-têtes

55voto

feroze Points 3433

HttpWebRequest expose beaucoup plus de choses que vous permet de précision, de contrôle du protocole, pour exemple: si vous souhaitez utiliser Keep-Alive, ce pool de connexion à utiliser, que ce soit pour tampon écrit ou pas, etc.

WebClient ne pas exposer tous ceux (bien que vous pouvez sous-classe d' WebClient et getaccess à la Demande sous-jacente de l'objet).

WebClient est utile pour les situations où vous voulez faire une opération (par exemple: POST/GET/Formulaire d'upload) et ne peut pas être pris la peine de créer et de gérer l' HttpWebRequest, RequestStream, HttpWebResponse, et les flux de réponse.

14voto

Benjamin Cox Points 4121

De Tim Heuer blog - http://timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx

Au lieu de Silverlight, vous aurez envie d'utiliser WebClient ou HttpWebRequest. Quelle est la différence? Voici la timheuer version. WebClient est plus simple de mise en œuvre de faire des requêtes GET vraiment facilement et obtenir un flux de réponse. HttpWebRequest est idéal pour quand vous avez besoin d'un peu plus d'un contrôle granulaire de la demande, ont besoin d'envoyer des en-têtes ou d'autres personnalisations.

12voto

Baaziz Points 113

Le WebClient classe fonctionne sur le thread d'interface utilisateur, de sorte que l'interface utilisateur n'est pas sensible alors que les données sont téléchargées à partir de l'Internet. D'autre part, la HttpWebRequest classe de ne pas bloquer le thread d'interface utilisateur, et votre demande est sensible. Ainsi, dans les applications où une grande quantité de données téléchargées à partir d'Internet ou si la source des données est un processus lent d'accès, vous devez utiliser la classe HttpWebRequest; dans tous les autres cas, vous devez utiliser la classe WebClient.

5voto

Zain Ali Points 3813

Une chose de plus HttpWebrquest vous permet de compression mais il Net.Classe WebClient ne prend pas en charge la compression HTTP

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X