Question

Il me semble que la plupart de ce qui peut être accompli avec HttpWebRequest/Response peut également être accompli avec WebClient classe. J'ai lu quelque part que WebClient est une enveloppe de haut niveau pour WebRequest/Response.
 Jusqu'à présent, je ne vois rien qui peut être accompli avec HttpWebRequest/Response qui ne peut être accompli avec WebClient, ni où HttpWebRequest / réponse vous donnera plus « à grains fins » contrôle.

Quand dois-je utiliser WebClient et quand HttpWebRequest/Response? (De toute évidence, sont HttpWebRequest/Response HTTP spécifiques.)

Si HttpWebRequest/Response niveau inférieur sont alors de WebClient, que puis-je accomplir avec HttpWebRequest/Response que je ne peux pas accomplir avec WebClient?

Était-ce utile?

La solution

Utilisation HttpWebRequest vous donne plus de contrôle sur la demande. Vous pouvez définir les cookies, les en-têtes, protocole, etc ... Dans la réponse, vous pouvez également récupérer les cookies et les en-têtes

Autres conseils

HttpWebRequest expose beaucoup plus de choses qui vous permet à grains fins de contrôle de protocole, par exemple:. Si vous voulez utiliser Keep-Alive, ce pool de connexions à utiliser, que ce soit pour tamponner écrit ou non, etc

WebClient n'expose pas tous ceux (bien que vous pouvez sous-classe de WebClient et GetAccess à l'objet de demande sous-jacente).

WebClient est utile pour les situations où vous voulez juste faire une opération (par exemple: POST / GET / upload de formulaire). Et la flemme de créer et de gérer le HttpWebRequest, RequestStream, HttpWebResponse et flux de réponse

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

Au lieu de Silverlight vous souhaitez utiliser WebClient ou HttpWebRequest. Quelle est la différence? Voici la version timheuer. WebClient est une implémentation plus simple de faire des requêtes GET très facilement et d'obtenir un flux de réponse. HttpWebRequest est idéal lorsque vous avez besoin d'un peu plus de contrôle granulaire sur la demande, besoin d'envoyer des en-têtes ou autres personnalisations.

WebClient classe fonctionne sur le thread d'interface utilisateur, de sorte que l'interface utilisateur ne répond pas lorsque les données sont en cours de téléchargement sur Internet. D'autre part, le HttpWebRequest classe ne bloque pas le thread d'interface utilisateur et votre application est sensible. Ainsi, dans les applications où une grande quantité de données doit être téléchargé sur Internet ou si la source des données est lent à l'accès, vous devez utiliser la classe HttpWebRequest; dans tous les autres cas, vous devez utiliser la classe WebClient.

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

Un autre inconvénient de WebClient est il ignore la valeur de ContentType de HTTP charset lorsque vous l'utilisez pour obtenir le texte de réponse. Vous devez définir explicitement l'encodage via la propriété Encoding.

Le "HtttpWebRequest" est obsolète dans .NET 4.5. Maintenant, cette classe est interne uniquement.

Un exemple:. Les données d'affichage et d'obtenir des données de retour traitées dans une demande / cycle de réponse semble être impossible avec WebClient, mais vous pouvez le faire avec HtttpWebRequest

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top