Red de conocimiento informático - Material del sitio web - Cómo utilizar SOCKET para enviar el paquete de solicitud HTTP1.1 GET POST

Cómo utilizar SOCKET para enviar el paquete de solicitud HTTP1.1 GET POST

Cómo utilizar SOCKET para enviar el paquete de solicitud HTTP1.1 GET POST

Los mensajes HTTP están orientados a texto y cada campo del mensaje es una cadena de códigos ASCII. indefinido. HTTP tiene dos tipos de mensajes: mensajes de solicitud y mensajes de respuesta.

Mensaje de solicitud

Un mensaje de solicitud HTTP consta de cuatro partes: línea de solicitud, encabezado de solicitud, línea en blanco y datos de solicitud. La siguiente figura muestra Se presenta el formato general del mensaje de solicitud. .

(1) Línea de solicitud

La línea de solicitud consta de tres campos: campo de método de solicitud, campo de URL y campo de versión del protocolo HTTP, que están separados por espacios. Por ejemplo, OBTENER /index.html HTTP/1.1.

Los métodos de solicitud del protocolo HTTP incluyen GET, POST, HEAD, PUT, DELETE, OPTIONS, TRACE y CONNECT. Aquí presentamos el método GET y el método POST más utilizados.

GET: Cuando el cliente quiere leer un documento del servidor utiliza el método GET. El método GET requiere que el servidor coloque el recurso ubicado en la URL en la parte de datos del mensaje de respuesta y lo envíe de regreso al cliente. Cuando se utiliza el método GET, los parámetros de solicitud y los valores correspondientes se agregan a la URL. Se utiliza un signo de interrogación ("?") para representar el final de la URL y el comienzo de los parámetros de solicitud. Los parámetros son limitados. Por ejemplo, /index.jsp?id=100amp;op=bind.

POST: El método POST se puede utilizar cuando el cliente proporciona mucha información al servidor. El método POST encapsula los parámetros de la solicitud en los datos de la solicitud HTTP y aparece en forma de nombre/valor. Puede transmitir una gran cantidad de datos y puede usarse para transferir archivos.

(2) Encabezado de solicitud

El encabezado de solicitud consta de pares de palabra clave/valor, un par por línea, y las palabras clave y los valores están separados por dos puntos en inglés ":". El encabezado de solicitud informa al servidor sobre la solicitud del cliente. Los encabezados de solicitud típicos son:

Agente de usuario: el tipo de navegador que generó la solicitud.

Aceptar: Listado de tipos de contenidos reconocidos por el cliente.

Host: el nombre de host solicitado, que permite que varios nombres de dominio estén en la misma dirección IP, es decir, un host virtual.

(3) Línea en blanco

Después del último encabezado de solicitud hay una línea en blanco, que envía caracteres de retorno de carro y avance de línea para notificar al servidor que no hay más encabezados de solicitud a continuación.

Para un

host completo: localhost

Tipo de contenido: application/x-www-form-urlencoded

Longitud del contenido : 12

Conexión: cerrar

sn=123amp;n=asa

en

host: localhost

Tipo de contenido: aplicación/x-www-form-urlencoded

Longitud del contenido: 12

Conexión: cerrar

Código de muestra:

void MEF_Set_Http_Header(método MEF_Http_Action_t, S8 * acción, S8 * servidor, S8 * msg_body, S8 * head, U8 connect_type)

{

S8 tmp_buf[20]; /p>

const S8 * compatible; MSIE 5.01; Windows NT 5.0)");

strcat(head, "/r/n");

strcat( head). , "Host: ");

strcat(cabeza, servidor);

strcat(cabeza, "/r/n"); == MEF_HTTP_POST)

{

strcat(head, "Tipo de contenido: aplicación/x-www-form-urlencoded");

strcat( head). , "/r/n");

}

if(método == MEF_HTTP_POST)

{

strcat(head , "Contenido-Longitud: ");

sprintf(tmp_buf, "d", strlen(msg_body));

strcat(head, tmp_buf >); strcat(head, "/r/n");

}

if(connect_type == 1)

strcat(head, "Conexión: Mantener - Vivo");

else

strcat(head, "Conexión: cerrar");

strcat(head, "/r/n");

strcat(head, "/r/n");

if(method == MEF_HTTP_POST)

{

if(msg_body)

{

strcat(cabeza, msg_body

}

}

}