SEND HTTP RAW DATA

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 2004


SEND HTTP RAW DATA (datos{; *})

ParámetroTipoDescripción
datosBLOBDatos HTTP a enviar
**Envío en trozos (chunked)

Descripción

El comando SEND HTTP RAW DATA permite al servidor Web 4D enviar datos HTTP "brutos", los cuales pueden estar en trozos. Sólo funciona en modo no contextual.

El parámetro datos contiene las dos partes estándar de una respuesta HTTP, es decir el encabezado y el cuerpo. Los datos son enviados sin formato previo por el servidor. Sin embargo, 4D efectúa un control básico sobre el encabezado y el cuerpo de la respuesta con el fin de asegurarse de que sean válidos:

Si el encabezado está incompleto o no cumple con las especificaciones del protocolo HTTP, 4D lo modifica como corresponde.

Si la petición HTTP está incompleta, 4D añade la información faltante. Si, por ejemplo, usted quiere efectuar una redirección, debe escribir:

   HTTP/1.1 302
   Location: http://...

Si sólo pasa:

   Location: http://...

4D completará la petición añadiendo HTTP/1.1 302.

El parámetro opcional * permite especificar que la respuesta se enviará "troceada". El corte de las respuestas puede ser útil cuando el servidor envía una respuesta sin conocer su longitud total (si, por ejemplo, la respuesta todavía no ha sido generada). Todos los navegadores compatibles HTTP/1.1-aceptan las respuestas troceadas.

Si pasa el parámetro *, el servidor Web incluirá automáticamente el campo transfer-encoding: chunked en el encabezado de la respuesta, si es necesario (puede manejar manualmente el encabezado de la respuesta, si así lo prefiere). El resto de la respuesta también será formateada para respetar la sintaxis de la opción chunked. Las respuestas troceadas contienen un solo encabezado y un número indefinido de cuerpos.

Todas las instrucciones SEND HTTP RAW DATA que sigan la ejecución de SEND HTTP RAW DATA(data;*) dentro del mismo método serán consideradas como parte de la respuesta (sin importar si contienen el parámetro *). El servidor coloca fin al envío troceado cuando termina la ejecución del método.

Nota: Si el cliente Web no soporta el protocolo HTTP/1.1, 4D convertirá automáticamente la respuesta al formato compatible HTTP/1.0 (el envío no será troceado). Sin embargo, en este caso, el resultado puede no corresponder a sus deseos. Por lo tanto se recomienda probar si el navegador Web soporta HTTP/1.1 y enviar una respuesta apropiada. Para hacer esto, puede utilizar un método de este tipo:

   C_BOOLEAN($0)
   ARRAY TEXT(arCampos;0)
   ARRAY TEXT(arValores;0)
   GET HTTP HEADER(arCampos;arValores)
   $0:=False
   If (Size of array(arValores)>=3)
      If (Position("HTTP/1.1";arValores{3})>0)
         $0:=True   ` El navegador soporta HTTP/1.1; devuelve True en $0  
      End if
   End if

Combinado con el comando GET HTTP BODY y con los otros comandos del tema "Servidor Web", este comando completa el rango de herramientas disponibles para los desarrolladores 4D para tratar de manera completamente personalizada las conexiones HTTP entrantes y salientes. Estas herramientas se presentan en el siguiente diagrama:

Ejemplo

Este ejemplo ilustra el uso de la opción chunked con el comando SEND HTTP RAW DATA. Los datos (una secuencia de números) se envían en 100 trozos generados rápidamente un bucle. Recuerde que el encabezado de la respuesta no está definido explícitamente: el comando SEND HTTP RAW DATA lo enviará automáticamente e insertará el campo transfer-encoding: chunked en él si el parámetro * se utiliza.

   C_LONGINT($cpt)
   C_BLOB($mi_blob)
   C_TEXT($salida)

   For ($cpt;1;100)
      $salida:="["+String($cpt)+"]"
      TEXT TO BLOB($salida;$mi_blob;UTF8 Text without length)   
      SEND HTTP RAW DATA($mi_blob;*) 
   End for

Ver también

GET HTTP BODY, GET HTTP HEADER.


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente