|
|
Publié sur 02/12/2015 16:56:31
|
|
|

HttpListener fournit un écouteur de protocole HTTP simple, programmable et contrôlable. Cela permet de fournir facilement certains services Http sans avoir à lancer un grand programme de services comme IIS.
Note : Cette classe est uniquement disponible sur les ordinateurs fonctionnant sous Windows XP SP2 ou Windows Server 2003.
Les étapes générales pour utiliser les services Http sont les suivantes :
Créez un objet écouteur HTTP et initialisez-le Ajoutez le préfixe URI à écouter Commencez à écouter les demandes des clients Gérer les requêtes Http des clients Désactivez l’écouteur HTTP Les étapes 3 et 4 peuvent être cyclées pour fournir des services demandés par plusieurs clients.
Créer un objet d’écoute HTTP
Pour créer un objet écouteur HTTP, il suffit de créer un nouvel objet HttpListener.
HttpListener auditeur = nouveau HttpListener() ;
L’initialisation nécessite les deux étapes suivantes
Vous pouvez ajouter la plage d’URL à écouter dans listener. Préfixes en utilisant la fonction suivante : Auditeur. Préfixes.Add(préfixe) //préfixe doit se terminer par '/' Appelle l’auditeur. Commencez () à lier le port et commencez à écouter les besoins du client. Accepter les requêtes HTTP
Dans .net 2.0, l’accès aux objets requête et réponse utilisés par la classe HttpListener est fourni via l’objet HttpListenerContext.
La façon la plus simple d’obtenir l’HttpListenerContext est la suivante :
HttpListenerContext = auditeur. GetContext() ;
Cette méthode bloquera la fonction d’appel jusqu’à la réception d’une requête client, et si vous souhaitez améliorer la vitesse de réponse, vous pouvez utiliser l’écouteur asynchrone de la méthode. BeginGetContext() pour obtenir l’objet HttpListenerContext.
Gérer les requêtes HTTP
Après avoir obtenu le HttpListenerContext, vous pouvez obtenir l’objet qui représente la requête du client via l’attribut Request et l’objet qui représente la réponse que l’HttpListener enverra au client via l’attribut Response.
HttpListenerRequest request request = contexte. Demande ; HttpListenerResponse réponse = contexte. Réponse ;
L’objet HttpListenerRequest ici est similaire à l’utilisation de Request and Response dans les objets Asp et HttpListenerResponse, donc je n’en dirai pas beaucoup ici, vous pouvez voir l’exemple ci-dessous pour un usage spécifique.
Désactivez l’écouteur HTTP
En appelant l’auditeur. Stop() pour éteindre l’auditeur et libérer les ressources pertinentes
Exemple de code :
utilisant System ; utilisant System.Collections.Generic ; en utilisant System.Text ;
utilisant System.Net ;
espace de noms ConsoleApplication1
{ Programme de la classe { vide statique Main(string[] args) { HttpListener auditeur = nouveau HttpListener() ; Auditeur. Préfixes. Add(« http://localhost/ ») ; Ajoutez la plage d’URL à écouter Auditeur. Start() ; Commencez à écouter sur le portage et à recevoir les demandes des clients Console.WriteLine(« Écoute... ») ;
Bloque la fonction principale jusqu’à la réception d’une requête client HttpListenerContext = auditeur. GetContext() ; HttpListenerRequest request request = contexte. Demande ; HttpListenerResponse réponse = contexte. Réponse ;
réponse chaîne Chaîne = chaîne. Format( »<HTML><BODY> {0}</BODY></HTML> », DateTime.Now) ; octet[] tampon = System.Text.Encoding.UTF8.GetBytes(responseString) ; Envoyez les informations correspondantes au client. Réponse. ContentLength64 = tampon. Longueur ; System.IO.Stream sortie = réponse. OutputStream ; Sortie. Write(buffer, 0, buffer. Length) ; Fermez le flux de sortie pour libérer les ressources correspondantes Sortie. Close() ;
Auditeur. Stop() ; Désactivez HttpListener } }
}
Le programme est relativement simple : d’abord créer un écouteur HTTP pour implémenter le service du domaine « http://localhost/time/ », lorsqu’il reçoit une requête distante, il convertit l’heure actuelle en une chaîne de sortie vers le client, puis ferme l’écouteur.
|
Précédent:Problèmes et solutions pour les appels AJAX inter-domaines vers ASP.NET services MVC ou WebAPIProchain:Le 3 décembre 2015, le site web a officiellement été renommé « Code Farmer Network », désormais notifié !
|