Compartir a través de


Tareas del servidor HTTP

Normalmente, las tareas del servidor HTTP se realizan en un orden específico; es decir, se debe completar una tarea y la salida obtenida antes de que comience la siguiente tarea.

Se crea una página de tareas para presentar código de ejemplo sobre tareas específicas que realiza una aplicación de servidor HTTP. Una página de tareas vincula al archivo de extensión C del ejemplo de servidor HTTP. Al instalar el PSDK en la unidad C:\ de un equipo local, la aplicación de ejemplo de servidor completa se instala en C:\Archivos de programa\Microsoft SDK\Samples\netds\http\server.

En la lista siguiente se identifican las tareas del servidor HTTP:

Inicialización del servicio HTTP

El servicio HTTP se inicializa mediante el función httpInitialize y el identificador de la cola de solicitudes se crea mediante HttpCreateHttpHandle. El servidor debe inicializarse antes de que se pueda llamar a cualquier otra función de servidor. La cola de solicitudes debe crearse antes de que el servicio pueda registrar direcciones URL para escuchar las solicitudes HTTP entrantes.

Para obtener más información y un ejemplo de código, vea Inicializar el servicio HTTP.

Registrar las direcciones URL en las que se va a escuchar

Para que la API del servidor HTTP escuche las solicitudes entrantes, las direcciones URL específicas se registran con la API llamando a la función HttpAddUrl. Las solicitudes entrantes que coinciden con estas direcciones URL se enrutan a la cola de solicitudes especificada en esta llamada.

Para obtener más información y un ejemplo de código, vea Registrar las direcciones URL para escuchar en.

Llamar a la rutina para recibir una solicitud

La función DoReceiveRequest asigna el búfer de solicitudes, inicializa el identificador de solicitud e inicia el bucle para recibir solicitudes.

Para obtener más información y un ejemplo de código, vea Llamar a la rutina para recibir una solicitud.

Recepción de la solicitud

La API del servidor HTTP proporciona una estructura de solicitudes para almacenar la solicitud entrante analizada. La aplicación asigna esta estructura y se inicializa cuando se recibe una solicitud entrante. La aplicación llama a la función httpReceiveHttpRequest para recibir la solicitud. Si el búfer de solicitudes es demasiado pequeño para recibir la solicitud, la aplicación puede aumentar el tamaño del búfer y llamar a HttpReceiveHttpRequest de nuevo para recibir toda la solicitud.

Para obtener más información y un ejemplo de código, vea Recibir una solicitud.

Control de la solicitud HTTP

La aplicación de ejemplo muestra cómo controlar los verbos de solicitud HTTP GET y POST. La aplicación envía un error 503 (NOT_IMPLEMENTED) si los verbos están presentes en la solicitud que la aplicación no controla.

Tenga en cuenta que la dirección URL que se va a usar en el control de solicitudes es la dirección URL procesada contenida en el miembro cookedUrl de la estructura de HTTP_REQUEST_V1. No la dirección URL no procesada en el miembro pRawUrl, que es únicamente para fines estadísticos y de seguimiento.

Para obtener más información y un ejemplo de código, vea Controlar la solicitud HTTP.

Enviar la respuesta HTTP

La estructura de respuesta se asigna e inicializa con el código de estado y una frase de motivo en la macro INITIALIZE_HTTP_RESPONSE. Se agrega un encabezado HTTP conocido a la estructura de respuesta de la macro ADD_KNOWN_HEADER y el cuerpo de la entidad se agrega a la respuesta de un bloque de datos de la memoria. Se llama a la funciónHttpSendHttpResponse para enviar la respuesta. En este ejemplo, la aplicación envía una respuesta 200 OK simple a la solicitud GET.

Para obtener más información y un ejemplo de código, vea Enviar una respuesta HTTP.

Enviar la respuesta HTTP POST

La solicitud POST requiere más procesamiento que la solicitud GET. El cuerpo de la entidad de solicitud se recibe llamando a la funciónHttpReceiveRequestEntityBody. La aplicación envía la respuesta y el cuerpo de la entidad de respuesta en llamadas independientes a la API del servidor HTTP. Los encabezados de respuesta se envían con el httpSendHttpResponse. El cuerpo de la entidad se envía en un bloque de datos desde un identificador de archivo con la funciónhttpSendResponseEntityBody.

Para obtener más información y un ejemplo de código, vea Enviar una respuesta HTTP POST.

Limpieza de la API del servidor HTTP

Las operaciones de limpieza de la API del servidor HTTP incluyen:

  • Quitar todas las direcciones URL registradas.
  • Cierre el identificador de la cola de solicitudes.
  • Finalización de los recursos creados por la API del servidor HTTP.

La aplicación llama a la funcióndeHttpRemoveUrl para anular el registro de direcciones URL registradas por la función deHttpAddUrl inicial. La aplicación también llama a HttpTerminate para cada llamada a httpInitialize con la configuración de marca coincidente. Esta llamada finaliza todos los recursos creados por la llamada a HttpInitialize.

Para obtener más información y un ejemplo de código, consulte Limpieza de la API del servidor HTTP.