4D v16.3

HTTP Request

Inicio

 
4D v16.3
HTTP Request

HTTP Request 


 

HTTP Request ( metodoHTTP ; url ; contenido ; respuesta {; nomEncab ; valoresEncab}{; *} ) -> Resultado 
Parámetro Tipo   Descripción
metodoHTTP  Texto in Método HTTP para la petición
url  Texto in URL a la cual enviar la petición
contenido  Texto, BLOB, Imagen, Objeto in Contenido del cuerpo(body)de la petición
respuesta  Texto, BLOB, Imagen, Objeto in Resultado de la petición
nomEncab  Array texto in Nombres de los encabezados de la petición
in Nombres de los encabezados devueltos
valoresEncab  Array texto in Valores de los encabezados de la petición
in Valores de los encabezados devueltos
Operador in Si se pasa, la conexión se mantiene (keep-alive)
Si se omite, la conexión se cierra automáticamente
Resultado  Entero largo in Código de estado HTTP

El comando HTTP Request permite enviar todo tipo de petición HTTP a un URL específico y procesar la respuesta del servidor HTTP.

Pase en el parámetro metodoHTTP el método HTTP de la petición. Puede utilizar una de las siguientes constantes, del tema HTTP Client:

Constante Tipo Valor Comentario
HTTP DELETE method Cadena DELETE Ver el RFC 2616
HTTP GET method Cadena GET Ver el RFC 2616. Equivale a utilizar el comando HTTP Get
HTTP HEAD method Cadena HEAD Ver el RFC 2616
HTTP OPTIONS method Cadena OPTIONS Ver el RFC 2616
HTTP POST method Cadena POST Ver el RFC 2616
HTTP PUT method Cadena PUT Ver el RFC 2616
HTTP TRACE method Cadena TRACE Ver el RFC 2616

Pase en el parámetro url  el URL a donde quiere enviar la petición. La sintaxis a utilizar es:

http://[{user}:[{password}]@]host[:{port}][/{path}][?{queryString}]

Por ejemplo, puede pasar las siguientes cadenas:

    http://www.myserver.com
    http://www.myserver.com/path
    http://www.myserver.com/path?name="jones"
    https://www.myserver.com/login (*)
    http://123.45.67.89:8083
    http://john:smith@123.45.67.89:8083

(*) Durante las peticiones HTTPS, la autoridad del certificado no se verifica.

Pase en el parámetro contenido el cuerpo (body) de la petición. Los datos pasados en este parámetro dependen del método HTTP de la petición.
Puede enviar datos de tipo texto, BLOB, imagen u objeto. Cuando el content-type no se especifica, se utilizan los siguientes tipos:

  • para los textos: texto/plano - UTF8
  • para los BLOBs: aplicación/byte-stream
  • para las imágenes: tipo MIME conocido (best for Web).
  • para los objetos C_OBJECT: aplicación/json

Después de la ejecución del comando, el parámetro respuesta recupera el resultado de la petición devuelto por el servidor. Este resultado corresponde al cuerpo (body) de la respuesta, sin los encabezados (headers). Puede pasar variables de diferentes tipos en respuesta:

  • Texto: cuando el resultado se espera en forma de texto (ver nota abajo).
  • BLOB: cuando el resultado se espera en forma binaria.
  • Imagen: cuando el resultado se espera en forma de imagen.
  • Objeto C_OBJECT: cuando el resultado esperado es un objeto.

Nota: cuando se pasa una variable de texto en respuesta, 4D intentará decodificar los datos devueltos desde el servidor. 4D primero intenta recuperar el conjunto de caracteres del encabezado de tipo de contenido, luego del contenido utilizando un BOM y, finalmente, busca cualquier atributo http-equiv charset (en contenido html) o codificación (para xml). Si no se puede detectar ningún charset, 4D intentará decodificar la respuesta en ANSI. Si la conversión falla, el texto resultante quedará vacío. Si no está seguro de si el servidor devuelve una información charset o BOM, pero conoce la codificación, es más preciso pasar respuesta en BLOB y llamar al Convert to text.

Si pasa una variable de tipo C_OBJECT en el parámetro respuesta, si la petición devuelve un resultado con el contenido tipo "aplicación/json" (o "algo/json"), 4D intenta analizar el contenido JSON para generar el objeto.

Si el resultado devuelto por el servidor no corresponde al tipo de la variable respuesta, se deja vacío y la variable sistema OK toma el valor 0.

En nomEncab y valoresEncab pase los arrays que contienen los nombres y los valores de los encabezados de la petición.
Después de la ejecución del método, estos arrays contienen los nombres y los valores de los encabezados devueltos por el servidor HTTP. Más específicamente, este principio le permite administrar sus cookies.

El parámetro * permite activar el mecanismo keep-alive para la conexión al servidor. Por defecto, este parámetro se omite, keep-alive no está activo.

El comando devuelve el código del estado HTTP estándar (200=OK...) tal como fue devuelto por el servidor. La lista de códigos de estado HTTP está en el RFC 2616.
Si la conexión al servidor no es posible por una razón relacionada con la red (DNS Failed, Server not reachable...), el comando devuelve 0 y se genera un error. Puede interceptar estos errores utilizando un método instalado por el comando ON ERR CALL.

Solicitud de eliminación de un registro en una base remota:

 C_TEXT($response)
 $body_t:="{record_id:25}"
 $httpStatus_l:=HTTP Request(HTTP DELETE method;"database.example.com";$body_t;$response)

Nota: usted debe procesar la solicitud de la manera apropiada en el servidor remoto, HTTP Request sólo se encarga de la petición y del resultado devuelto.

Solicitud de adición de un registro a una base remota:

 C_TEXT($response)
 $body_t:="{fName:'john',fName:'Doe'}"
 $httpStatus_l:=HTTP Request(HTTP PUT method;"database.example.com";$body_t;$response)

Nota: usted debe procesar la solicitud de la manera apropiada en el servidor remoto, HTTP Request sólo se encarga de la petición y del resultado devuelto.

Petición para añadir un registro en JSON a una base remota:

 C_OBJECT($content)
 OB SET($content;"lastname";"Doe";"firstname";"John")
 $result:=HTTP Request(HTTP PUT method;"database.example.com";$content;$response)



Ver también 

HTTP Get

 
PROPIEDADES 

Producto: 4D
Tema: Cliente HTTP
Número 1158

This command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v13
Modificado: 4D v14

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)