Java Programación de la cadena desde el principiante al profesional: campo de encabezado HTTP



En primer lugar, el campo de cabecera común

1. Conexión

Este campo sólo existe en el acuerdo HTTP1.1.Se determina el cliente y el servidor para una sesión, el servidor se cierre inmediatamente la conexión de red.En el cumplimiento del cliente es utilizar el método más directo de lectura (método readLine es lo mismo) las solicitudes de cliente Web de los recursos de lectura, ya sea de inmediato a -1 (readLine devuelve null).Hay dos valores de la conexión: Cierre y Keep-Alive Cuando se utiliza la conexión: Cerrar cuando HTTP1.0 y el acuerdo es el mismo, cuando se leen los datos leídos método devuelve inmediatamente, y el uso de la conexión:. El tiempo de mantenimiento de conexión, leer los métodos de lecturaUna vez que los datos han de ser bloqueados por algún tiempo.Leer los datos después de que el tiempo de espera, sino que continuó hasta la ejecución.En el artículo anterior readHttpResponse discutido (... ...) implementación del método de las primeras 011 líneas para verificar la función de conexión.Vamos a hacer un experimento utilizando el simulador de HTTP.

(1) de entrada del simulador siguientes HTTP nombre de dominio:

www.baidu.com

(2) HTTP Simulador de solicitud HTTP para entrar en la siguiente información:

GET / HTTP/1.1

Anfitrión: www.baidu.com

(3) doble retorno de carro (introducir una línea en blanco), envíe el mensaje de la petición, y como se muestra en la Figura 1, los encabezados de respuesta HTTP mensaje:






Figura 1

(4) y después de la entrada o Y (en el encabezado de la pantalla de respuesta HTTP, introduzca inmediatamente Y o y), muestra el contenido del mensaje de respuesta.Después de que el contenido de la pantalla, unos 10 segundos para entrar en el "anfitrión: puerto" del sistema (como en sendHttpRequest () la ejecución de la línea 004 del código para leer los datos de tiempo de espera del escenario).

(5) en "host: puerto" del sistema, pulse Enter, escriba el nombre utilizado por última vez www.baidu.com y los puertos 80.Vuelva a introducir la siguiente petición HTTP:

GET / HTTP/1.1

Anfitrión: www.baidu.com

Conexión: cerrar

Después de entrar en la anterior solicitud HTTP, el volver a ejecutar el primer paso 3,4.Por último, el contenido de la pantalla del mensaje de respuesta HTTP, directamente directamente en el "anfitrión: puerto" del sistema.Además de este método, lee la primera línea de la petición GET / HTTP/1.0. Esto no puede esperar, la salida.

Al establecer la conexión, puede descargar los recursos web (como herramienta de descarga multi-hilo, navegador Web, etc), inmediatamente desconectarse de la red, lo que efectivamente puede reducir el consumo de recursos del cliente.

2. Fecha

El campo de encabezado Fecha describe los mensajes de solicitud y respuesta de mensajes se crean.Este valor del campo es de tipo HTTP fecha, debe estar en la hora GMT (Greenwich), Tiempo GMT es hora GMT menos 8.He aquí un ejemplo del campo Fecha:

Date: Tue, 15 Nov 2007 08:12:31 GMT

3. Content-Length

El número de bytes especificado entidad mensaje.método POST en el mensaje de solicitud deberá utilizar el mensaje de solicitud de Content-Length que el número de bytes especificado en el contenido de la entidad.En respuesta a los valores de los campos del mensaje se especifica en la respuesta HTTP que devuelve los recursos Web actual, el número de bytes.

En segundo lugar, la solicitud HTTP campo de la cabecera

1. Anfitrión

campo de host se utiliza para especificar los recursos visitada por el nombre de host del cliente y número de puerto.Si el número de puerto se utiliza para conectarse al servidor es igual al número de puerto, el número de puerto puede ser omitido.Aquí está un ejemplo usando el campo Host:

Anfitrión: www.sina.com.cn

Este campo es necesario, si la solicitud HTTP no contiene este campo, el servidor devolverá el estado 400 (Solicitud incorrecta) de respuesta.

2. Aceptar

Acepte campo de cabecera para determinar el cliente puede recibir el tipo de medio.formato General es "*/*" o "tipo /" subtipo ". Inciso de este líder puede pasar múltiples tipos de medios, separados por", "separados.Aceptar si el siguiente es un ejemplo:

Aceptar:: image / gif, image / jpg

Si el valor de la petición Aceptar campo de cabecera con lo anterior, la del lado del servidor las páginas generadas dinámicamente en la IMG será el primer jefe cuando la imagen contiene el formato GIF, si la imagen GIF no existe, contiene imágenes en formato jpg.

3. User-Agent

Este campo es utilizado por primera vez para especificar lo que el acceso del cliente al servidor, si es navegador Internet Explorer 6, y la unidad está instalado.NET 2.0, el User-Agent tendrá los siguientes valores:

User-Agent: Mozilla/4.0 (

compatible;

MSIE 6.0;

Windows NT 5.2;

SV1; Maxthon;

. NET CLR 1.1.4322;

. NET CLR 2.0.50727;

InfoPath.1; InfoPath.2)

Compruebe que el servidor puede utilizar esta versión campo de la cliente del explorador, y determinar de acuerdo a las diferentes versiones de los datos enviados al cliente.

4. Gama

el campo de rango se transmite sólo a través de la parte del servidor de los recursos Web primero.Este campo se puede utilizar para implementar la función de cabecera HTTP.Hay muchas herramientas de descarga es a través de este campo en el encabezado HTTP.Rango de campos se puede ajustar en tres formatos de rango de bytes a transmitir:

(1) Rango: bytes = 1000-2000

Distancia de transmisión desde 1000 hasta 2000 bytes.

(2) Rango: bytes = 1000 -

Transporte Web recursos tras los primeros 1000 bytes de todos los contenidos.

(3) Rango de bytes = 1000

Transferencia de los últimos 1000 bytes.

En tercer lugar, la respuesta HTTP mensaje de campo de la cabecera

1. Accept-Ranges

Este campo muestra si el servidor Web es compatible con Rango (ya sea para admitir la funcionalidad de HTTP), si lo admite, el retorno Accept-Ranges: bytes, si no el apoyo, el retorno Accept-Ranges: ninguna.

2. Content-Range

Volver al recurso Web determinado intervalo de bytes.El formato del valor de este campo es:

Inicio bytes posición - final de la posición de byte / recursos de la Web, el número total de bytes

He aquí un ejemplo del uso del Contenido del rango:

Content-Range: 1000-3000 / 5000

Prueba

Conectar con el servidor en el simulador de files.cnblogs.com HTTP y escriba el siguiente mensaje de solicitud HTTP:

GET / nokiaguy / HttpSimulator.rar HTTP/1.1

Anfitrión: files.cnblogs.com

Rango: bytes = 1000 -

Devuelto encabezado de respuesta se muestra en la Figura 2:






Figura 2

Se puede ver desde el servidor después de la función de transferencia files.cnblogs.com punto de interrupción de apoyo.Pero también para comprobar el valor de Content-Length es el número actual de bytes en la sesión de pasar por encima, no los recursos web, el número total de bytes.Los valores de campo de rango de contenido en el "/" seguido por el número de recursos de la Web es el número total de bytes.

3. Ubicación

Este campo especifica la dirección en la que el nuevo acceso a nuevos recursos Web.Cuando la dirección de recursos web de reemplazo, y los usuarios no pueden ponerse al día con algunos de los antiguos la nueva dirección URL; Por lo tanto, los usuarios de edad para acceder a la URL original, utilice la ubicación de la nueva URL de vuelta al cliente.Esta traducción de direcciones es completamente transparente para el usuario.