Principios del protocolo HTTP en la programación de red de Android (2)

1 Introducción

Para comprender los principios del protocolo HTTP, es necesario hablar sobre los mensajes HTTP. Los mensajes HTTP están orientados al texto. Cada campo en el mensaje es una cadena ASCII, y la longitud de cada campo es incierta. Hay dos tipos de mensajes HTTP: mensajes de solicitud y mensajes de respuesta. Antes de comprender el mensaje HTTP, puede usar la herramienta de captura de paquetes para ver el mensaje de solicitud y el mensaje de respuesta de la red solicitante. La herramienta de captura de paquetes recomienda Fiddle o Charle . Por ejemplo, después de visitar http://msdn.itellyou.cn/ en el navegador y luego capturar paquetes a través de Fiddler, podemos ver el mensaje de solicitud y el mensaje de respuesta como se muestra a continuación.

2 mensaje de solicitud HTTP

Un mensaje de solicitud HTTP consta de cuatro partes: línea de solicitud, encabezado de solicitud, línea en blanco y datos de solicitud. El formato general se muestra a continuación.

Línea de solicitud

La línea de solicitud consta del campo del método de solicitud, el campo URI y el campo de versión del protocolo HTTP, separados por espacios. El formato es: Método Solicitud-URI HTTP-Versión CRLF. Como se muestra en la figura anterior: OBTENGA http://msdn.itellyou.cn/ HTTP / 1.1.

El método  indica el método de solicitud. Existen varios métodos de solicitud, como se muestra a continuación.

GET: Solicitud para obtener el recurso identificado por el URI de solicitud.

POST: agrega nuevos datos después del recurso identificado por el URI de solicitud.

HEAD: Solicite obtener el encabezado del mensaje de respuesta del recurso identificado por el URI de solicitud.

PUT: solicite al servidor que almacene un recurso y use Request-URI como su identificador.

ELIMINAR: solicite al servidor que elimine el recurso identificado por el URI de solicitud.

RASTREO: el servidor de solicitud devuelve la información de solicitud recibida, que se utiliza principalmente para pruebas o diagnóstico.

CONECTAR: El protocolo HTTP 1.1 está reservado para servidores proxy que pueden cambiar la conexión a una tubería.

OPCIONES: Solicite consultar el rendimiento del servidor o consultar opciones y requisitos relacionados con los recursos.

PARCHE: La entidad contiene una tabla que explica la diferencia con el contenido original representado por el URI.

MOVER: Solicite al servidor que mueva la página especificada a otra dirección de red.

COPIAR: solicite al servidor que copie la página especificada a otra dirección de red.

ENLACE: solicite al servidor que establezca una relación de enlace.

DESVINCULAR: desconecta el enlace.

ENVUELTO: permite al cliente enviar solicitudes encapsuladas.

Extensión-moteada: se pueden agregar métodos adicionales sin cambiar el protocolo.

Request-URI es un identificador uniforme de recursos.

HTTP-Version indica la versión de protocolo HTTP solicitada

CRLF significa retorno de carro y avance de línea (a excepción del CRLF al final, no se permiten caracteres CR o LF separados).

Encabezado de solicitud

Después de la línea de solicitud, habrá 0 o más encabezados de solicitud, cada encabezado de solicitud contiene un nombre y un valor, y están separados por dos puntos en inglés ":". Consulte la introducción del encabezado a continuación para obtener más detalles.

Línea en blanco

Después de que el último encabezado de solicitud es una línea en blanco, un retorno de carro y un avance de línea, notifica al servidor que ya no hay un encabezado de solicitud.

Solicitar datos

Los datos de solicitud generalmente se usan para solicitudes en el método POST. El método POST es adecuado para ocasiones que requieren que los usuarios completen formularios. Los encabezados de solicitud más utilizados son Content-Type y Content-Length.

3 mensaje de respuesta HTTP

Después de recibir e interpretar el mensaje de solicitud, el servidor devolverá un mensaje de respuesta HTTP. El mensaje de respuesta HTTP consta de 4 partes: línea de estado, encabezado del mensaje, línea en blanco y cuerpo de respuesta. El formato general se muestra a continuación.

Línea de estado

La línea de estado consta de la versión del protocolo HTTP, el código de estado de respuesta y el campo de descripción de texto del código de estado, separados por espacios. El formato es: HTTP-Version Status-Code Reason-Phrase CRLF. Como se muestra en la figura anterior: HTTP / 1.1 200 OK.

El código de estado representa el código de estado de respuesta. Consta de 3 dígitos. El primer dígito define el tipo de respuesta, y hay 5 valores posibles:

100 ~ 199: Mensaje de indicación, se recibe la solicitud, el solicitante debe continuar realizando operaciones.

200 299: La solicitud se realizó correctamente. La solicitud se recibió y procesó correctamente.

300 ~ 399: Redirección. Para completar la solicitud, se deben realizar más operaciones.

400 ~ 499: Error del cliente, la solicitud tiene un error de sintaxis o la solicitud no se puede cumplir.

500 × 599: error del servidor, el servidor no puede cumplir la solicitud legítima.

 

Los códigos de estado y descripciones de estado más comunes:

200 OK: la solicitud del cliente fue exitosa.

400 Solicitud incorrecta: la solicitud del cliente tiene un error de sintaxis que el servidor no puede entender.

401 No autorizado: la solicitud no está autorizada. Este código de estado debe utilizarse con el campo de encabezado WWW-Authenticate.

403 Prohibido: el servidor recibe la solicitud, pero se niega a proporcionar el servicio.

500 Error interno del servidor: error interno del servidor, no se puede completar la solicitud.

503 Servidor no disponible: el servidor actualmente no puede procesar las solicitudes de los clientes. Puede volver a la normalidad después de un período de tiempo.

 

Para obtener más códigos de estado, consulte la tabla de comparación de códigos de estado HTTP .

Encabezado de respuesta

Al igual que el encabezado de solicitud, cada encabezado de respuesta contiene un nombre y un valor, separados por dos puntos en inglés ":". Consulte la introducción del encabezado a continuación para obtener más detalles.

Línea en blanco

Después del último encabezado de respuesta hay una línea en blanco, retorno de carro y avance de línea.

Cuerpo de respuesta

El cuerpo de respuesta es el contenido del recurso devuelto por el servidor.

4 encabezado

Los encabezados de mensajes HTTP se dividen en encabezados generales, encabezados de solicitud, encabezados de respuesta y encabezados de entidad. Consisten en pares clave-valor, un par por línea, y el nombre y el valor del campo de encabezado están separados por dos puntos ":" en inglés. El nombre del campo del encabezado no distingue entre mayúsculas y minúsculas. El encabezado describe las propiedades del cliente o servidor, los recursos que se transmiten y la conexión que debe realizarse.

Encabezado común

El encabezado genérico se puede usar tanto en el registro de solicitud como en los encabezados de respuesta. Por ejemplo:

Fecha: indica la fecha y hora en que se generó el mensaje.

Conexión: le permite enviar opciones para especificar la conexión, como especificar si la conexión es continua o especificar la opción de cerrar para notificar al servidor que cierre la conexión después de que se complete la respuesta.

Control de caché: se utiliza para especificar la instrucción de caché. La instrucción de caché es unidireccional (la instrucción de caché que aparece en la respuesta puede no aparecer en la solicitud) y es independiente (la instrucción de caché de un mensaje no afecta el caché de otro procesamiento de mensajes). Mecanismo).

Encabezado de solicitud

El encabezado de la solicitud es para permitir que el cliente pase información sobre sí mismo y el formulario de respuesta deseado. Notifica al servidor sobre la solicitud del cliente. A continuación se muestra un encabezado de solicitud típico.

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.

User-Agent: información como el tipo de navegador y el sistema operativo que envió la solicitud.

Aceptar: una lista de tipos de contenido que el cliente puede reconocer para especificar qué tipos de información recibe el cliente.

Accept-Encoding: codificación de datos reconocida por el cliente.

Aceptar-Idioma: indica el tipo de idioma admitido por el navegador.

Conexión: permite que el cliente y el servidor especifiquen opciones relacionadas con la conexión de solicitud / respuesta. Por ejemplo, Keep-Alive en este momento significa mantener la conexión.

Transferencia-Codificación: Informe al receptor qué método de codificación se utilizó para garantizar una transmisión confiable del mensaje.

Encabezado de respuesta

El servidor utiliza el encabezado de respuesta para pasar su propia información de respuesta. Un encabezado de respuesta típico se muestra a continuación.

Ubicación: se utiliza para redirigir al destinatario a una nueva ubicación, a menudo utilizada al cambiar los nombres de dominio.

Servidor: contiene información del sistema utilizada por el servidor para procesar solicitudes, y corresponde al encabezado de solicitud de agente de usuario.

Cabecera de la entidad

Los encabezados de entidad se usan para definir la información de los recursos transmitidos y se pueden usar tanto para solicitudes como para respuestas. Tanto los mensajes de solicitud como los de respuesta pueden transmitir una entidad. Un encabezado de entidad típico se muestra a continuación.

Tipo de contenido: el tipo de medio del cuerpo de la entidad enviado al destinatario.

Longitud del contenido: se utiliza para indicar la longitud del cuerpo de la entidad, expresada como un número decimal almacenado en bytes.

Content-Language: describe el lenguaje natural utilizado por el recurso. Si esta opción no está configurada, se proporcionará el contenido de la entidad para toda la lectura del idioma.

Codificación de contenido: se utiliza como modificador para los tipos de medios. Su valor indica la codificación de contenido adicional que se ha aplicado al cuerpo de la entidad, por lo que para obtener el tipo de medio al que se hace referencia en el campo de encabezado Content-Type, se debe utilizar el mecanismo de decodificación correspondiente.

Última modificación: se utiliza para indicar la última fecha y hora de modificación del recurso.

Caduca: se usa para indicar la fecha y la hora en que expira la respuesta.

 

Para obtener más información sobre la introducción de encabezados, consulte el encabezado de respuesta HTTP y la tabla de comparación de información de encabezado de solicitud .

 

 

 

106 artículos originales publicados · elogiados 37 · 80,000 visitas

Supongo que te gusta

Origin blog.csdn.net/lyz_zyx/article/details/96326794
Recomendado
Clasificación