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
}
}
}