27 votes

.NET: WebBrowser, WebClient, WebRequest, HTTPWebRequest ... ARGH!

Dans l'espace de noms System.Net, il existe de très nombreuses classes différentes avec des noms similaires, telles que:

  • WebBrowser et WebClient
  • WebRequest et HTTPWebRequest
  • WebResponse et HTTPWebResponse

Ce sont les principaux qui me intéressent.

Quelle est la fonction de chacun? En quoi sont-ils différents les uns des autres?

De plus, dans quels cas utiliseriez-vous lequel?

41voto

Ash Points 31541

WebBrowser est en fait dans le Système.De Windows.Les formes de l'espace de noms et un contrôle visuel que vous pouvez ajouter à un formulaire. Il est essentiellement un wrapper autour du navigateur Internet Explorer (MSHTML). Il vous permet de visualiser et d'interagir par programmation avec une page web. Vous appelez la méthode de Naviguer en passant d'une URL web, attendez qu'elle se termine de télécharger et d'afficher et d'interagir avec la page à l'aide du modèle d'objet qu'il fournit.

HttpWebRequest est une classe concrète qui permet à la demande de code n'importe quel type de fichier via HTTP. Vous recevez généralement comme un flux d'octets. Ce que vous faites avec elle après qui est à votre application.

HttpWebResponse permet de traiter la réponse à partir d'un serveur web qui a été précédemment demandé l'aide de HttpWebRequest.

WebRequest et WebResponse sont les classes de base abstraites que la HttpWebRequest et HttpWebResponse hérite. Vous ne pouvez pas créer directement. D'autres classes qui héritent de ces comprennent Ftp et le Fichier classes.

WebClient je l'ai toujours vu comme une belle classe d'aide qui fournit des moyens plus simples, par exemple, de télécharger ou de télécharger un fichier à partir d'une url de site web. (par exemple DownloadFile et DownloadString méthodes). J'ai entendu dire qu'il utilise HttpWebRequest / HttpWebResponse derrière les coulisses, pour certaines méthodes.

Si vous avez besoin de plus de précision, de contrôle sur le web les demandes et les réponses, HttpWebRequest / HttpWebResponse sont probablement la voie à suivre. Sinon WebClient est généralement plus simple et faire le travail.

7voto

Joel Coehoorn Points 190579

Je ne sais pas de n'importe quel Système.Net.WebBrowser, mais WebClient est simplement une classe qui vous permet de télécharger des fichiers (pages html) à partir du site web dans la mémoire ou même directement dans un fichier. Une base de l'exemple de code ressemble à ceci:

string html;
using (var wc = new WebClient())
{
    html = wc.DownloadString("http://stackoverflow.com/questions/1780679/");
}

Vous pouvez faire beaucoup avec le Service, mais il y a certaines limitations. Si vous avez besoin de faire un peu de sérieux web de grattage, vous aurez besoin de descendre plus bas niveau. C'est là que le HttpWebRequest/HttpWebResponse venir. Vous pouvez les utiliser pour envoyer toute demande d'un navigateur web peut envoyer, dans n'importe quel ordre. Par exemple, vous devrez peut-être connecter à un site web avant, vous pouvez demander la page que vous voulez vraiment, et WebClient pourrait ne pas être en mesure de le faire. HttpWebRequest volonté.

Maintenant, il ya une autre option. Système.De Windows.Les formulaires.WebBrowser est un contrôle destiné à placer sur un formulaire. Essentiellement, il enveloppe le moteur utilisé dans Internet Explorer pour vous fournir toutes les fonctionnalités d'un navigateur web. Vous devez être prudent en utilisant ce général de grattage: il n'est pas portable (mauvais pour mono), utilise beaucoup de ressources, a les mêmes problèmes de sécurité que l'exécution d'un navigateur complet, et a des effets secondaires tels que la fuite potentielle d'une des fenêtres popup. Le contrôle est préférable de l'utiliser dans un formulaire pour se connecter à une spécifiques connus des ressources web. Par exemple, vous pouvez avoir une application Windows Forms pour la vente, et application web où vous le vendre pour le téléchargement. Vous pourriez fournir un contrôle WebBrowser qui montre quelques pages sur ce site web spécialement conçu pour les afficher dans votre application qui permet aux utilisateurs d'acheter dans l'application des mises à niveau.

2voto

BStruthers Points 952

WebRequest et WebResponse sont des classes abstraites. HTTPWebRequest et HTTPWebResponse en sont des implémentations.

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