Exportar (0) Imprimir
Expandir todo

HttpListener (Clase)

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Proporciona un agente de escucha del protocolo HTTP sencillo y controlado mediante programación. Esta clase no se puede heredar.

Espacio de nombres: System.Net
Ensamblado: System (en system.dll)

public sealed class HttpListener : IDisposable
public final class HttpListener implements IDisposable
public final class HttpListener implements IDisposable

La clase HttpListener le permite crear un agente de escucha del protocolo HTTP sencillo que responde a las solicitudes HTTP. El agente de escucha está activo durante el período de duración del objeto HttpListener y se ejecuta dentro de una aplicación con sus permisos.

NotaNota

Esta clase sólo está disponible en los equipos que ejecutan el sistema operativo Windows XP SP2 o Windows Server 2003. Si intenta crear un objeto HttpListener en un equipo que está ejecutando un sistema operativo más antiguo, el constructor produce una excepción PlatformNotSupportedException.

Para utilizar HttpListener, cree una instancia nueva de la clase utilizando el constructor HttpListener y utilice la propiedad Prefixes para obtener acceso a la colección que contiene las cadenas que especifican qué prefijos de identificador uniforme de recursos (identificador URI) debería procesar HttpListener.

Una cadena del prefijo URI está compuesta por un esquema (http o https), un host, un puerto opcional y una ruta de acceso opcional. Un ejemplo de una cadena de prefijo completa es “http://www.contoso.com:8080/customerData/”. Los prefijos deben finalizar en una barra diagonal (“/”). Responde a la solicitud el objeto HttpListener con el prefijo más parecido a un identificador URI solicitado. Objetos HttpListener distintos no pueden agregar el mismo prefijo; se produce una excepción Win32Exception si HttpListener agrega un prefijo que ya está en uso.

Cuando se especifica un puerto, el elemento de host se puede reemplazar con “*” para indicar que HttpListener acepta solicitudes enviadas al puerto si el identificador URI solicitado no coincide con ningún otro prefijo. Por ejemplo, para recibir todas las solicitudes enviadas al puerto 8080 cuando no hay ningún objeto HttpListener que controle el identificador URI solicitado, el prefijo es “http://*:8080/”. De manera similar, para especificar que HttpListener acepta todas las solicitudes enviadas a un puerto, reemplace el elemento de host con el el carácter "*", “https://+:8080”. Los caracteres "*" y "+" pueden estar presentes en prefijos que incluyen rutas de acceso.

Para empezar a realizar escuchas de solicitudes de los clientes, agregue los prefijos URI a la colección y llame al método Start. La clase HttpListener proporciona los modelos sincrónico y asincrónico para procesar las solicitudes de cliente. El acceso a las solicitudes y sus respuestas asociadas se realiza por medio del objeto HttpListenerContext devuelto por el método GetContext o sus homólogos asincrónicos, los métodos BeginGetContext y EndGetContext.

El modelo sincrónico es adecuado si su aplicación se debe bloquear para esperar una solicitud de cliente y si sólo desea procesar una solicitud a la vez. Con el modelo sincrónico, llame al método GetContext, que espera a que un cliente envíe una solicitud. El método devuelve un objeto HttpListenerContext que puede procesarse cuando aparezca uno.

En el modelo asincrónico más complejo, su aplicación no se bloquea en espera de solicitudes y cada solicitud se procesa en su propio subproceso de ejecución. Utilice el método BeginGetContext para especificar un método definido por la aplicación al que se llamará por cada solicitud de entrada. Dentro de ese método, llame al método EndGetContext para obtener la solicitud, procesarla y responderla.

En los dos modelos, el acceso a las solicitudes de entrada tiene lugar por medio de la propiedad HttpListenerContext.Request y están representadas por objetos HttpListenerRequest. De forma similar, el acceso a las respuestas se realiza utilizando la propiedad HttpListenerContext.Response y se representan mediante objetos HttpListenerResponse. Estos objetos comparten algunas funcionalidades con los objetos HttpWebRequest y HttpWebResponse, pero los últimos no se pueden utilizar junto con HttpListener porque implementan comportamientos de cliente, no de servidor.

Un objeto HttpListener puede requerir autenticación del cliente. Puede especificar un esquema determinado que desee utilizar para la autenticación o bien un delegado para determinar el esquema a utilizar. Debe exigir algún tipo de autenticación para obtener información sobre la identidad del cliente. Para obtener más información, vea las propiedades User, AuthenticationSchemes y AuthenticationSchemeSelectorDelegate.

NotaNota

Si crea un objeto HttpListener mediante https, seleccione un Certificado de servidor para ese agente de escucha. De lo contrario, en una consulta HttpWebRequest de HttpListener se producirá un error, con el cierre inesperado de la conexión.

NotaNota

Puede configurar certificados de servidor y otras opciones del agente de escucha mediante HttpCfg.exe. Si desea más detalles, vea http://msdn.microsoft.com/library/SPA/?url=/library/en-us/http/http/httpcfg_exe.asp. La aplicación ejecutable se distribuye con Windows Server 2003 o se puede generar a partir del código fuente disponible en el Platform SDK.

NotaNota

Si especifica varios esquemas de autenticación para el objeto HttpListener, el agente de escucha desafiará los clientes en el orden siguiente: Negotiate, NTLM, Digest y, a continuación, Basic.

Nota de la plataforma Windows Server 2003: Se requiere para poder utilizar esta clase.

Nota de la plataforma Windows XP Home, Windows XP Professional x64, Windows Server 2003: Se requiere Service Pack 2 o posterior para utilizar esta clase

En el ejemplo de código siguiente se muestra la forma de utilizar un objeto 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();
}

System.Object
  System.Net.HttpListener

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows Server 2003, Windows XP Media Center, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft