Ir al contenido

HTTP GET

Tipo: http-get  ·  Paquete: HTTP Activities v1.0.5  ·  Salida: ZoanHttpResponse

Envía una petición GET para leer/consultar datos de una API o servicio web. Es la petición más común: obtener un registro, listar elementos, consultar un dato. No envía cuerpo; toda la información va en la URL (incluyendo parámetros de consulta como ?estado=activo).

Hace la petición a la url (con cabeceras y autenticación opcionales) y devuelve un ZoanHttpResponse. Si el cuerpo de la respuesta es JSON, se convierte automáticamente en diccionario/lista.

  • Códigos de respuesta: con 2xx la actividad termina bien; las redirecciones se siguen solas; cualquier otro código (4xx, 5xx, 304) hace fallar la actividad — ver qué códigos hacen fallar la actividad.
  • Tiempos: 30 s para conectar y, por defecto, 5 min para la petición completa (parámetro timeout). Si se agotan, la actividad falla con un error normal que Try / Catch y Retry capturan — ver tiempos de espera.
  • Sin efectos locales: no escribe archivos ni cambia variables aparte de la salida. Un GET no debería modificar datos en el servidor, así que es seguro de reintentar con Retry.
ParámetroTipoPor defectoDescripción
urlstring—URL absoluta de la petición (https://…), con su query string si hace falta. Admite expresiones (ej. "https://api.ejemplo.com/clientes/" + id).
ParámetroTipoPor defectoDescripción
headersDictionary—Cabeceras extra (nombre → valor), en el editor JSON. Las cabeceras de contenido (Content-Type…) se ignoran. Ver cabeceras.
authorizationDictionary—Autenticación en el editor JSON: {"type": "bearer", "token": …}, {"type": "basic", "username": …, "password": …} o {"type": "apikey", "header": …, "value": …}. Ver autenticación.
timeoutint300Segundos que se espera la petición completa (conexión, envío y respuesta); máximo 3600, admite decimales (0.5). Desde la versión 1.0.5. Ver tiempos de espera.

Devuelve un ZoanHttpResponse:

PropiedadTipoContenido
.StatusCodeintCódigo 2xx de la respuesta final (normalmente 200).
.OkboolSiempre true en una salida recibida (los demás códigos hacen fallar la actividad).
.BodyobjectRespuesta JSON → diccionario/lista navegable (resp.Body["items"][0]["id"]); otra respuesta → texto; cuerpo vacío → "". Una clave inexistente devuelve un valor vacío, no un error.
.HeadersDictionaryCabeceras de la respuesta; varios valores unidos por ", ".
MensajeCausa y solución
El servidor respondió HTTP 404 (Not Found) a la solicitud GET.El servidor respondió con un código fuera de 2xx (404, 401, 500…). Revisa la URL y la autenticación. Si el código es esperable, envuelve la petición en Try / Catch y decide según error.Message.Contains("HTTP 404").
No such host is known. (u otro error de red del sistema)No hubo respuesta: nombre de servidor mal escrito, sin red, conexión rechazada o certificado inválido. error.Type es "HttpRequestException". Para cortes intermitentes, usa Retry.
La solicitud GET a api.ejemplo.com no terminó en 300 s (tiempo de espera agotado). Sube «Tiempo de espera» si el servicio tarda más.El servidor no respondió dentro de timeout. error.Type es \"TimeoutException\": captúralo con Try / Catch o reintenta con Retry; si la API tarda por naturaleza, sube timeout. Si el fallo es al conectar, el mensaje dice No se pudo conectar con … en 30 s.
An invalid request URI was provided. Either the request URI must be an absolute URI or BaseAddress must be set.La url no es absoluta (por ejemplo api.ejemplo.com/x). Incluye el esquema: https://api.ejemplo.com/x.
'url' es obligatorio.La expresión de url dio nulo. Verifica la variable que la arma.

Desde la versión 1.0.5, si el servidor no responde a tiempo la actividad falla con un error capturable (TimeoutException); antes la ejecución terminaba como cancelada — ver tiempos de espera.

Consultar un cliente por su id, autenticando con un token seguro:

HTTP GET
url = "https://api.erp.com/clientes/" + clienteId
authorization = { "type": "bearer", "token": credential("api-erp")["value"] }
→ output: resp
Set Variable name = nombreCliente value = resp.Body["nombre"]
Log message = "Cliente: " + nombreCliente

Recorrer una lista que viene dentro de la respuesta:

HTTP GET url = "https://api.erp.com/facturas?estado=pendiente" → output: resp
For Each items = resp.Body["items"] itemVariable = factura
└─ activities:
Log message = "Factura " + factura["numero"] + " por " + factura["total"]