Dérivation à partir de WebRequest
La classe WebRequest est une classe abstraite de base qui fournit les méthodes et propriétés de base permettant de créer un gestionnaire de demandes spécifique au protocole correspondant au modèle de protocole enfichable .NET Framework. Les applications utilisant la classe WebRequest peuvent demander des données en faisant appel à n'importe quel protocole pris en charge sans avoir à spécifier le protocole utilisé.
Deux critères sont à remplir pour qu'une classe spécifique au protocole soit utilisée comme protocole enfichable : La classe doit implémenter l'interface IWebRequestCreate, et elle doit s'inscrire à l'aide de la méthode WebRequest.RegisterPrefix. La classe doit substituer toutes les méthodes et propriétés abstract de WebRequest pour fournir l'interface enfichable.
Les instances WebRequest sont destinées à des utilisations uniques ; si vous voulez effectuer une autre demande, créez un nouveau WebRequest. WebRequest prend en charge l'interface ISerializable afin de permettre aux développeurs de sérialiser un modèle WebRequest puis de le reconstruire pour des demandes supplémentaires.
IWebRequest Create, méthode
La méthode Create est chargée d'initialiser une nouvelle instance de la classe spécifique au protocole. Lorsqu'une nouvelle WebRequest est créée, la méthode WebRequest.Create fait correspondre l'URI demandée aux préfixes URI inscrits à l'aide de la méthode RegisterPrefix. La méthode Create du descendant spécifique au protocole approprié doit retourner une instance initialisée du descendant capable d'effectuer une transaction demande/réponse standard pour le protocole sans qu'il soit nécessaire de modifier de champs spécifiques au protocole.
ConnectionGroupName, propriété
La propriété ConnectionGroupName est utilisée pour nommer un groupe de connexions à une ressource, de sorte que des demandes multiples puissent être effectuées à partir d'une seule connexion. Pour implémenter le partage de connexion, vous devez utiliser une méthode spécifique au protocole de groupement et d'assignation des connexions. Par exemple, la classe ServicePointManager fournie implémente le partage de connexion pour la classe HttpWebRequest. La classe ServicePointManager crée ServicePoint qui fournit une connexion à un serveur spécifique pour chaque groupe de connexions.
ContentLength, propriété
La propriété ContentLength spécifie le nombre d'octets de données envoyé au serveur lors du transfert des données.
Généralement, la propriété Method doit être définie afin d'indiquer qu'un transfert est en cours lorsque la valeur de la propriété ContentLength est supérieure à zéro.
ContentType, propriété
La propriété ContentType fournit toutes les informations spéciales dont votre protocole a besoin pour communiquer avec le serveur afin d'identifier le type de contenu que vous envoyez. Généralement, il s'agit du type de contenu MIME de toutes les données transmises.
Credentials, propriété
La propriété Credentials contient des informations nécessaires à l'authentification de la demande auprès du serveur. Vous devez implémenter les détails du processus d'authentification de votre protocole. La classe AuthenticationManager est chargée d'authentifier les demandes et de fournir un jeton d'authentification. La classe qui fournit les informations d'authentification utilisées par votre protocole doit implémenter l'interface ICredentials.
Headers, propriété
La propriété Headers contient une collection arbitraire de paires nom/valeur de métadonnées associée à la demande. Toutes les métadonnées nécessaires au protocole et pouvant être exprimées sous la forme d'une paire nom/valeur peuvent être incluses dans la propriété Headers. Généralement, ces informations doivent être définies avant d'appeler les méthodes GetRequestStream ou GetResponse ; une fois la demande effectuée, les métadonnées sont considérées comme étant en lecture seule.
Vous n'êtes pas obligé de vous servir de la propriété Headers pour utiliser les métadonnées d'en-tête. Les métadonnées spécifiques au protocole peuvent être exposées en tant que propriétés ; par exemple, la propriété HttpWebRequest.UserAgent expose l'en-tête HTTP User-Agent. Lorsque vous exposez des métadonnées d'en-tête en tant que propriété, vous ne devez pas permettre à la même propriété d'être définie à l'aide de la propriété Headers.
Method, propriété
La propriété Method contient le verbe ou l'action que la demande envoie au serveur pour exécution. Le paramètre par défaut de la propriété Method doit activer une action demande/réponse standard sans nécessiter la définition de propriétés spécifiques au protocole. Par exemple, la méthode HttpWebResponse utilise le paramètre GET par défaut qui demande une ressource à un serveur Web et retourne la réponse.
Généralement, la valeur de la propriété ContentLength doit être supérieure à zéro lorsqu'un verbe ou une action est attribué à la propriété Method indiquant qu'un transfert est en cours.
PreAuthenticate, propriété
Les applications définissent la propriété PreAuthenticate pour indiquer que les informations d'authentification doivent être envoyées avec la demande initiale plutôt que d'attendre une stimulation d'authentification. La propriété PreAuthenticate n'a de sens que si le protocole prend en charge les informations d'authentification envoyées avec la demande initiale.
Proxy, propriété
La propriété Proxy contient une interface IWebProxy qui est utilisée pour accéder à la ressource demandée. La propriété Proxy n'a de sens que si le protocole que vous utilisez prend en charge les demandes proxy. Vous devez définir le proxy par défaut si celui-ci est requis par votre protocole.
Dans certains environnements comme derrière un pare-feu d'entreprise, votre protocole peut être tenu d'utiliser un proxy. Dans ce cas, vous devez implémenter l'interface IWebProxy pour créer une classe proxy qui fonctionne pour votre protocole.
RequestUri, propriété
La propriété RequestUri contient l'URI passé à la méthode WebRequest.Create. Cette propriété est en lecture seule et ne peut pas changer une fois que WebRequest a été créée. Si votre protocole prend en charge la redirection, la réponse peut provenir d'une ressource identifiée par un URI différent. Si vous avez besoin de donner accès à l'URI qui a répondu, vous devez fournir une propriété supplémentaire contenant cet URI.
Timeout, propriété
La propriété Timeout contient la durée d'attente, en millisecondes, avant l'expiration de la demande et la levée d'une exception. Timeout ne s'applique qu'aux demandes synchrones effectuées à l'aide de la méthode GetResponse ; les demandes asynchrones doivent utiliser la méthode Abort pour annuler une demande en cours.
Définir la propriété Timeout n'a de sens que si la classe spécifique au protocole implémente un processus d'expiration de délai.
Abort, méthode
La méthode Abort annule une demande asynchrone en cours vers un serveur. Après l'annulation de la demande, l'appel de GetResponse, BeginGetResponse, EndGetResponse, GetRequestStream, BeginGetRequestStream, ou EndGetRequestStream lève une exception WebException. La propriété Status a pour valeur RequestCanceled.
BeginGetRequestStream et EndGetRequestStream, méthodes.
La méthode BeginGetRequestStream démarre une demande asynchrone pour le flux utilisé pour transférer des données vers le serveur. La méthode EndGetRequestStream termine la demande asynchrone et retourne le flux demandé. Ces méthodes implémentent la méthode GetRequestStream à l'aide du modèle asynchrone .NET Framework standard.
BeginGetResponse et EndGetResponse, méthodes
La méthode BeginGetResponse démarre une demande asynchrone vers un serveur. La méthode EndGetResponse termine la demande asynchrone et retourne la réponse demandée. Ces méthodes implémentent la méthode GetResponse à l'aide du modèle asynchrone .NET Framework standard.
GetRequestStream, méthode
La méthode GetRequestStream retourne un flux utilisé pour écrire des données sur le serveur demandé. Le flux retourné doit être un flux en écriture seule qui n'effectue pas de recherche ; il s'agit d'un flux unilatéral de données qui est écrit sur le serveur. Le flux retourne false pour les propriétés CanRead et CanSeek et true pour la propriété CanWrite.
La méthode GetRequestStream ouvre généralement une connexion vers le serveur et, avant de retourner le flux, envoie des informations d'en-tête qui indiquent que des données sont envoyées vers le serveur. Comme GetRequestStream démarre la demande, définir n'importe quelles propriétés Header ou la propriété ContentLength n'est généralement pas autorisé après l'appel de GetRequestStream.
GetResponse, méthode
La méthode GetResponse retourne un descendant spécifique au protocole de la classe WebResponse qui représente la réponse provenant du serveur. À moins que la demande n'ait déjà été initiée par la méthode GetRequestStream, la méthode GetResponse crée une connexion vers la ressource identifiée par RequestUri, envoie les informations d'en-tête indiquant le type de demande effectuée, puis reçoit la réponse de la ressource.
Une fois que la méthode GetResponse est appelée, toutes les propriétés doivent être considérées comme étant en lecture seule. Les instances WebRequest sont destinées à des utilisations uniques ; si vous voulez effectuer une autre demande, vous devez créer un nouveau WebRequest.
La méthode GetResponse est chargée de créer un descendant WebResponse approprié pour contenir la réponse entrante.
Voir aussi
Programmation de protocoles enfichables | Dérivation à partir de WebResponse | WebRequest, classe | HttpWebRequest, classe | FileWebRequest, classe