HttpListener HttpListener HttpListener HttpListener Class

Définition

Fournit un écouteur de protocole HTTP simple, contrôlé par programme.Provides a simple, programmatically controlled HTTP protocol listener. Cette classe ne peut pas être héritée.This class cannot be inherited.

public ref class HttpListener sealed : IDisposable
public sealed class HttpListener : IDisposable
type HttpListener = class
    interface IDisposable
Public NotInheritable Class HttpListener
Implements IDisposable
Héritage
HttpListenerHttpListenerHttpListenerHttpListener
Implémente

Exemples

L’exemple de code suivant montre comment utiliser un HttpListener.The following code example demonstrates using a HttpListener.

// This example requires the System and System.Net namespaces.
public static void SimpleListenerExample(string[] prefixes)
{
    if (!HttpListener.IsSupported)
    {
        Console.WriteLine ("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
        return;
    }
    // URI prefixes are required,
    // for example "http://contoso.com:8080/index/".
    if (prefixes == null || prefixes.Length == 0)
      throw new ArgumentException("prefixes");
    
    // Create a listener.
    HttpListener listener = new HttpListener();
    // Add the prefixes.
    foreach (string s in prefixes)
    {
        listener.Prefixes.Add(s);
    }
    listener.Start();
    Console.WriteLine("Listening...");
    // Note: The GetContext method blocks while waiting for a request. 
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;
    // Obtain a response object.
    HttpListenerResponse response = context.Response;
    // Construct a response.
    string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
    // Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length;
    System.IO.Stream output = response.OutputStream;
    output.Write(buffer,0,buffer.Length);
    // You must close the output stream.
    output.Close();
    listener.Stop();
}
Public Shared Sub SimpleListenerExample(prefixes As String())
    If Not HttpListener.IsSupported Then
        Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.")
        Return
    End If
    ' URI prefixes are required,
    ' for example "http://contoso.com:8080/index/".
    If prefixes Is Nothing Or prefixes.Length = 0 Then
        Throw New ArgumentException("prefixes")
    End If

    ' Create a listener
    Dim listener = New HttpListener()

    For Each s As String In prefixes
        listener.Prefixes.Add(s)
    Next
    listener.Start()
    Console.WriteLine("Listening...")
    ' Note: The GetContext method blocks while waiting for a request.
    Dim context As HttpListenerContext = listener.GetContext()
    Console.WriteLine("Listening...")
    ' Obtain a response object
    Dim request As HttpListenerRequest = context.Request
    ' Construct a response.
    Dim response As HttpListenerResponse = context.Response
    Dim responseString As String = "<HTML><BODY> Hello world!</BODY></HTML>"
    Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(responseString)
    ' Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length
    Dim output As System.IO.Stream = response.OutputStream
    output.Write(buffer, 0, buffer.Length)
    'You must close the output stream.
    output.Close()
    listener.Stop()
End Sub

Remarques

À l’aide de la HttpListener (classe), vous pouvez créer un écouteur de protocole HTTP simple qui répond aux demandes HTTP.Using the HttpListener class, you can create a simple HTTP protocol listener that responds to HTTP requests. L’écouteur est actif pendant la durée de vie de la HttpListener objet et s’exécute au sein de votre application avec ses autorisations.The listener is active for the lifetime of the HttpListener object and runs within your application with its permissions.

À utiliser HttpListener, créer une nouvelle instance de la classe à l’aide de la HttpListener constructeur et utilisez le Prefixes le depréfixesdepropriétépouraccéderàlacollectionquicontientleschaînesquispécifientlesressourcesURI(UniformIdentifier)HttpListenerdoit traiter.To use HttpListener, create a new instance of the class using the HttpListener constructor and use the Prefixes property to gain access to the collection that holds the strings that specify which Uniform Resource Identifier (URI) prefixes the HttpListener should process.

Une chaîne de préfixe URI est composée d’un schéma (http ou https), un ordinateur hôte, un port facultatif et un chemin d’accès facultatif.A URI prefix string is composed of a scheme (http or https), a host, an optional port, and an optional path. Est un exemple d’une chaîne de préfixe complète http://www.contoso.com:8080/customerData/.An example of a complete prefix string is http://www.contoso.com:8080/customerData/. Préfixes doivent se terminer par une barre oblique (« / »).Prefixes must end in a forward slash ("/"). Le HttpListener objet avec le préfixe qui correspond le mieux à un URI demandé répond à la demande.The HttpListener object with the prefix that most closely matches a requested URI responds to the request. Plusieurs HttpListener objets ne peut pas ajouter le même préfixe ; un Win32Exception exception est levée si un HttpListener ajoute un préfixe qui est déjà utiliser.Multiple HttpListener objects cannot add the same prefix; a Win32Exception exception is thrown if a HttpListener adds a prefix that is already in use.

Lorsqu’un port est spécifié, l’élément hôte peut être remplacé par «*» pour indiquer que le HttpListener accepte les demandes envoyées au port si l’URI demandé ne correspond pas à n’importe quel autre préfixe.When a port is specified, the host element can be replaced with "*" to indicate that the HttpListener accepts requests sent to the port if the requested URI does not match any other prefix. Par exemple, pour recevoir toutes les demandes envoyées au port 8080 lorsque l’URI demandé n’est pas géré par les HttpListener, le préfixe est http://*: 8080 /.For example, to receive all requests sent to port 8080 when the requested URI is not handled by any HttpListener, the prefix is http://*:8080/. De même, pour spécifier que le HttpListener accepte toutes les demandes envoyées à un port, remplacez l’élément hôte par le caractère « + ».Similarly, to specify that the HttpListener accepts all requests sent to a port, replace the host element with the "+" character. Par exemple, https://+:8080.For example, https://+:8080. Le «*» et « + » caractères peuvent être présents dans les préfixes qui incluent des chemins d’accès.The "*" and "+" characters can be present in prefixes that include paths.

Les sous-domaines génériques à partir de .NET Core 2.0 ou .NET Framework 4.6 sur Windows 10, sont pris en charge dans les préfixes URI qui sont gérés par un HttpListener objet.Starting with .NET Core 2.0 or .NET Framework 4.6 on Windows 10, wildcard subdomains are supported in URI prefixes that are managed by an HttpListener object. Pour spécifier un sous-domaine de caractère générique, utilisez le «*« caractère en tant que partie du nom d’hôte dans un préfixe URI.To specify a wildcard subdomain, use the "*" character as part of the hostname in a URI prefix. Par exemple, http://*.foo.com/.For example, http://*.foo.com/. Cela passer comme argument à la Add (méthode).Pass this as the argument to the Add method. Cela fonctionne à compter de .NET Core 2.0 ou .NET Framework 4.6 sur Windows 10 ; dans les versions antérieures, cette opération génère un HttpListenerException.This works as of .NET Core 2.0 or .NET Framework 4.6 on Windows 10; in earlier versions, this generates an HttpListenerException.

Avertissement

Les liaisons génériques de niveau supérieur (http://*: 8080 / et http://+:8080) doit pas être utilisé.Top-level wildcard bindings (http://*:8080/ and http://+:8080) should not be used. Les liaisons génériques de niveau supérieur peuvent exposer votre application à des failles de sécurité.Top-level wildcard bindings can open up your app to security vulnerabilities. Cela s’applique aux caractères génériques forts et faibles.This applies to both strong and weak wildcards. Utilisez des noms d’hôte explicites plutôt que des caractères génériques.Use explicit host names rather than wildcards. Une liaison générique de sous-domaine (par exemple, *.mysub.com) ne présente pas ce risque de sécurité si vous contrôlez le domaine parent en entier (par opposition à *.com, qui est vulnérable).Subdomain wildcard binding (for example, *.mysub.com) doesn't have this security risk if you control the entire parent domain (as opposed to *.com, which is vulnerable). Consultez la rfc7230 section-5.4 pour plus d’informations.See rfc7230 section-5.4 for more information.

Pour commencer à écouter les demandes des clients, ajoutez les préfixes URI à la collection et appeler le Start (méthode).To begin listening for requests from clients, add the URI prefixes to the collection and call the Start method. HttpListener propose des modèles à la fois synchrones et asynchrones pour traiter les demandes du client.HttpListener offers both synchronous and asynchronous models for processing client requests. Demandes et leurs réponses associées sont accessibles à l’aide de la HttpListenerContext objet retourné par la GetContext méthode ou ses équivalents asynchrones, le BeginGetContext et EndGetContext méthodes.Requests and their associated responses are accessed using the HttpListenerContext object returned by the GetContext method or its asynchronous counterparts, the BeginGetContext and EndGetContext methods.

Le modèle synchrone est approprié si votre application doit être bloquée en attendant une demande du client et si vous souhaitez ne traiter qu’une seule demande à la fois.The synchronous model is appropriate if your application should block while waiting for a client request and if you want to process only one request at a time. À l’aide du modèle synchrone, appelez le GetContext (méthode), qui attend qu’un client envoie une demande.Using the synchronous model, call the GetContext method, which waits for a client to send a request. La méthode retourne un HttpListenerContext de l’objet à vous pour traitement lorsque l’une se produit.The method returns an HttpListenerContext object to you for processing when one occurs.

Dans le modèle asynchrone plus complexe, votre application ne bloque pas alors que l’attente des demandes et chaque demande est traitée dans son propre thread d’exécution.In the more complex asynchronous model, your application does not block while waiting for requests and each request is processed in its own execution thread. Utilisez le BeginGetContext méthode pour spécifier une méthode définie par l’application d’être appelée pour chaque demande entrante.Use the BeginGetContext method to specify an application-defined method to be called for each incoming request. Dans cette méthode, appelez le EndGetContext méthode pour obtenir la demande, de traiter et de répondre.Within that method, call the EndGetContext method to obtain the request, process it, and respond.

Dans les deux modèles, les demandes entrantes sont accessibles à l’aide de la HttpListenerContext.Request propriété et sont représentées par HttpListenerRequest objets.In either model, incoming requests are accessed using the HttpListenerContext.Request property and are represented by HttpListenerRequest objects. De même, les réponses sont accessibles à l’aide de la HttpListenerContext.Response propriété et sont représentées par HttpListenerResponse objets.Similarly, responses are accessed using the HttpListenerContext.Response property and are represented by HttpListenerResponse objects. Ces objets partagent certaines fonctionnalités avec les HttpWebRequest et HttpWebResponse objets, mais les objets de ce dernier ne peut pas être utilisé conjointement avec HttpListener , car ils implémentent client, pas le serveur, des comportements.These objects share some functionality with the HttpWebRequest and HttpWebResponse objects, but the latter objects cannot be used in conjunction with HttpListener because they implement client, not server, behaviors.

Un HttpListener peut nécessiter l’authentification du client.An HttpListener can require client authentication. Vous pouvez spécifier un schéma particulier à utiliser pour l’authentification, ou vous pouvez spécifier un délégué qui détermine le schéma à utiliser.You can either specify a particular scheme to use for authentication, or you can specify a delegate that determines the scheme to use. Vous devez exiger une forme d’authentification pour obtenir des informations sur l’identité du client.You must require some form of authentication to obtain information about the client's identity. Pour plus d’informations, consultez le User, AuthenticationSchemes, et AuthenticationSchemeSelectorDelegate propriétés.For additional information, see the User, AuthenticationSchemes, and AuthenticationSchemeSelectorDelegate properties.

Notes

Si vous créez un HttpListener à l’aide de https, vous devez sélectionner un certificat de serveur pour cet écouteur.If you create an HttpListener using https, you must select a Server Certificate for that listener. Sinon, un HttpWebRequest requête de ce HttpListener échouera avec une fin inattendue de la connexion.Otherwise, an HttpWebRequest query of this HttpListener will fail with an unexpected close of the connection.

Notes

Vous pouvez configurer des certificats de serveur et d’autres options d’écouteur à l’aide de l’environnement réseau (netsh.exe).You can configure Server Certificates and other listener options by using Network Shell (netsh.exe). Consultez Network Shell (Netsh) pour plus d’informations.See Network Shell (Netsh) for more details. Le fichier exécutable est fourni avec Windows Server 2008 et Windows Vista.The executable began shipping with Windows Server 2008 and Windows Vista.

Notes

Si vous spécifiez plusieurs schémas d’authentification pour le HttpListener, l’écouteur sélectionnera les clients dans l’ordre suivant : Negotiate, NTLM, Digest, puis Basic.If you specify multiple authentication schemes for the HttpListener, the listener will challenge clients in the following order: Negotiate, NTLM, Digest, and then Basic.

Constructeurs

HttpListener() HttpListener() HttpListener() HttpListener()

Initialise une nouvelle instance de la classe HttpListener.Initializes a new instance of the HttpListener class.

Propriétés

AuthenticationSchemes AuthenticationSchemes AuthenticationSchemes AuthenticationSchemes

Obtient ou définit le schéma utilisé pour authentifier les clients.Gets or sets the scheme used to authenticate clients.

AuthenticationSchemeSelectorDelegate AuthenticationSchemeSelectorDelegate AuthenticationSchemeSelectorDelegate AuthenticationSchemeSelectorDelegate

Obtient ou définit le délégué appelé pour déterminer le protocole utilisé pendant l'authentification des clients.Gets or sets the delegate called to determine the protocol used to authenticate clients.

DefaultServiceNames DefaultServiceNames DefaultServiceNames DefaultServiceNames

Obtient une liste par défaut des noms de fournisseurs de services (SPN) déterminée par les préfixes enregistrés.Gets a default list of Service Provider Names (SPNs) as determined by registered prefixes.

ExtendedProtectionPolicy ExtendedProtectionPolicy ExtendedProtectionPolicy ExtendedProtectionPolicy

Obtient ou définit le ExtendedProtectionPolicy à utiliser pour la protection étendue d’une session.Gets or sets the ExtendedProtectionPolicy to use for extended protection for a session.

ExtendedProtectionSelectorDelegate ExtendedProtectionSelectorDelegate ExtendedProtectionSelectorDelegate ExtendedProtectionSelectorDelegate

Obtient ou définit le délégué appelé pour déterminer le ExtendedProtectionPolicy à utiliser pour chaque demande.Gets or sets the delegate called to determine the ExtendedProtectionPolicy to use for each request.

IgnoreWriteExceptions IgnoreWriteExceptions IgnoreWriteExceptions IgnoreWriteExceptions

Obtient ou définit une valeur Boolean spécifiant si votre application reçoit des exceptions qui se produisent quand HttpListener envoie la réponse au client.Gets or sets a Boolean value that specifies whether your application receives exceptions that occur when an HttpListener sends the response to the client.

IsListening IsListening IsListening IsListening

Obtient une valeur qui indique si HttpListener a été démarré.Gets a value that indicates whether HttpListener has been started.

IsSupported IsSupported IsSupported IsSupported

Obtient une valeur qui indique si HttpListener peut être utilisé avec le système d'exploitation actuel.Gets a value that indicates whether HttpListener can be used with the current operating system.

Prefixes Prefixes Prefixes Prefixes

Obtient les préfixes URI (Uniform Resource Identifier) gérés par cet objet HttpListener.Gets the Uniform Resource Identifier (URI) prefixes handled by this HttpListener object.

Realm Realm Realm Realm

Obtient ou définit le domaine, ou partition de ressource, associé à cet objet HttpListener.Gets or sets the realm, or resource partition, associated with this HttpListener object.

TimeoutManager TimeoutManager TimeoutManager TimeoutManager

Gestionnaire de délai d'attente pour cette instance HttpListener.The timeout manager for this HttpListener instance.

UnsafeConnectionNtlmAuthentication UnsafeConnectionNtlmAuthentication UnsafeConnectionNtlmAuthentication UnsafeConnectionNtlmAuthentication

Obtient ou définit une valeur Boolean qui contrôle si, quand NTLM est utilisé, les demandes supplémentaires utilisant la même connexion TCP (Transmission Control Protocol) doivent être authentifiées.Gets or sets a Boolean value that controls whether, when NTLM is used, additional requests using the same Transmission Control Protocol (TCP) connection are required to authenticate.

Méthodes

Abort() Abort() Abort() Abort()

Arrête immédiatement l'objet HttpListener, en ignorant toutes les demandes actuellement mises en file d'attente.Shuts down the HttpListener object immediately, discarding all currently queued requests.

BeginGetContext(AsyncCallback, Object) BeginGetContext(AsyncCallback, Object) BeginGetContext(AsyncCallback, Object) BeginGetContext(AsyncCallback, Object)

Commence à récupérer une demande entrante de façon asynchrone.Begins asynchronously retrieving an incoming request.

Close() Close() Close() Close()

Arrête le HttpListener.Shuts down the HttpListener.

EndGetContext(IAsyncResult) EndGetContext(IAsyncResult) EndGetContext(IAsyncResult) EndGetContext(IAsyncResult)

Met fin à une opération asynchrone pour récupérer une demande du client entrante.Completes an asynchronous operation to retrieve an incoming client request.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetContext() GetContext() GetContext() GetContext()

Attend une demande entrante et retourne les résultats quand elle est reçue.Waits for an incoming request and returns when one is received.

GetContextAsync() GetContextAsync() GetContextAsync() GetContextAsync()

Attend une demande entrante en tant qu'opération asynchrone.Waits for an incoming request as an asynchronous operation.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
Start() Start() Start() Start()

Permet à cette instance de recevoir des demandes entrantes.Allows this instance to receive incoming requests.

Stop() Stop() Stop() Stop()

Entraîne l'arrêt de la réception des demandes entrantes par cette instance.Causes this instance to stop receiving incoming requests.

ToString() ToString() ToString() ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)

Implémentations d’interfaces explicites

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

Libère les ressources détenues par cet objet HttpListener.Releases the resources held by this HttpListener object.

S’applique à

Voir aussi