|
|
Publicado en 2/12/2015 16:56:31
|
|
|

HttpListener proporciona un escuchador de protocolo HTTP simple, programable y controlable. Te permite proporcionar fácilmente algunos servicios Http sin tener que iniciar un programa de servicios grande como IIS.
Nota: Esta clase solo está disponible en ordenadores que ejecutan sistemas operativos Windows XP SP2 o Windows Server 2003.
Los pasos generales para utilizar los servicios Http son los siguientes:
Crea un objeto de escucha HTTP e inicialízalo Añade el prefijo URI que hay que escuchar Empieza a escuchar las solicitudes de los clientes Gestionar las solicitudes HTTP de los clientes Desactiva el oyente HTTP Los pasos 3 y 4 pueden ciclarse para ofrecer servicios solicitados por varios clientes.
Crear un objeto de escucha HTTP
Para crear un objeto listener HTTP, solo necesitas crear un nuevo objeto HttpListener.
HttpListener listener = nuevo HttpListener();
La inicialización requiere los siguientes dos pasos
Puedes añadir el rango de URL para escuchar en listener. Prefijos usando la siguiente función: Oyente. Prefijos.Add(prefijo) //prefijo debe terminar en '/' Llama al oyente. Empieza a asignar el puerto y empieza a escuchar las necesidades del cliente. Aceptar solicitudes HTTP
En .net 2.0, el acceso a los objetos de solicitud y respuesta usados por la clase HttpListener se proporciona mediante el objeto HttpListenerContext.
La forma más sencilla de obtener el HttpListenerContext es la siguiente:
HttpListenerContext context = oyente. GetContext();
Este método bloqueará la función de llamada hasta que se reciba una solicitud del cliente, y si quieres mejorar la velocidad de respuesta, puedes usar el escuchador del método asincrónico. BeginGetContext() para obtener el objeto HttpListenerContext.
Gestionar las solicitudes HTTP
Tras obtener el HttpListenerContext, puedes obtener el objeto que representa la petición del cliente a través del atributo Request y el objeto que representa la respuesta que el HttpListener enviará al cliente mediante el atributo Response.
HttpListenerRequest request = contexto. Petición; HttpListenerResponse respuesta = contexto. Respuesta;
El objeto HttpListenerRequest aquí es similar al uso de Request and Response en los objetos Asp y HttpListenerResponse, así que no diré mucho aquí, puedes ver el ejemplo a continuación para un uso específico.
Desactiva el oyente HTTP
Llamando al oyente. Stop() para apagar al oyente y liberar los recursos relevantes
Ejemplo de código:
usando Sistema; usando System.Collections.Generic; usando System.Text;
usando System.Net;
espacio de nombres ConsoleApplication1
{ Programa de la clase { vacío estático Main(string[] args) { HttpListener listener = nuevo HttpListener(); Oyente. Prefijos. Add("http://localhost/"); Añade el rango de URLs que hay que escuchar Oyente. Inicio(); Empieza a escuchar en el port y recibe solicitudes de clientes Console.WriteLine("Escuchando...");
Bloquea la función principal hasta que se recibe una solicitud del cliente HttpListenerContext context = oyente. GetContext(); HttpListenerRequest request = contexto. Petición; HttpListenerResponse respuesta = contexto. Respuesta;
string responseString = string. Format("<HTML><BODY> {0}</BODY></HTML>", FechaTime.Ahora); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Envía la información correspondiente al cliente. respuesta. ContentLength64 = búfer. Longitud; Salida System.IO.Stream = respuesta. OutputStream; Salida. Write(buffer, 0, buffer. Longitud); Cierra el flujo de salida para liberar los recursos correspondientes Salida. Cerca();
Oyente. Stop(); Desactiva HttpListener } }
}
El programa es relativamente sencillo: primero crea un oyente HTTP para implementar el servicio del dominio "http://localhost/time/", cuando recibe una solicitud remota, convierte la hora actual en una cadena de salida al cliente y luego cierra el oyente.
|
Anterior:Problemas y soluciones para llamadas AJAX entre dominios a ASP.NET servicios MVC o WebAPIPróximo:El 3 de diciembre de 2015, la web fue oficialmente renombrada como "Code Farmer Network", ¡notificada por la presente por la siguiente!
|