Ir al contenido

HTTP PUT

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

Envía una petición PUT, normalmente para reemplazar por completo un recurso existente. Mandas el objeto entero con sus nuevos valores; la API sustituye el recurso por lo que envías.

Igual que POST pero con el método PUT: envía el body a la url de un recurso concreto (que suele incluir su id) y devuelve un ZoanHttpResponse.

  • Cuerpo: con el contentType por defecto (application/json) el body se convierte a JSON; con otro contentType se envía como texto. Siempre en UTF-8. Ver cuerpo y Content-Type.
  • Códigos de respuesta: con 2xx termina bien; cualquier otro código 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.
  • Idempotente: enviar dos veces el mismo PUT deja el recurso igual, así que es seguro de reintentar con Retry.
ParámetroTipoPor defectoDescripción
urlstring—URL absoluta del recurso a reemplazar (suele incluir su id).
bodyobject—El recurso completo con sus nuevos valores: diccionario o lista (→ JSON) o texto (para otros contentType). Con contentType JSON, un texto se envía como cadena JSON; si tienes JSON en un texto, usa parseJson(texto).
ParámetroTipoPor defectoDescripción
contentTypestring"application/json"Tipo de medio del cuerpo, sin parámetros (application/json, text/xml…). charset=utf-8 se agrega solo.
headersDictionary—Cabeceras extra (nombre → valor), en el editor JSON. Las cabeceras de contenido se ignoran. Ver cabeceras.
authorizationDictionary—Autenticación en el editor JSON: bearer, basic o apikey. 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 con .StatusCode (2xx, típicamente 200 o 204), .Ok (siempre true en una salida recibida), .Body (JSON → diccionario/lista; otra cosa → texto; vacío → "") y .Headers.

MensajeCausa y solución
El servidor respondió HTTP 404 (Not Found) a la solicitud PUT.El servidor respondió con un código fuera de 2xx (404 recurso inexistente, 400 datos incompletos, 401/403, 5xx). Maneja los esperables con Try / Catch.
The format of value 'application/json; charset=utf-8' is invalid.contentType lleva parámetros. Deja solo el tipo de medio.
No such host is known. (u otro error de red del sistema)No hubo respuesta. error.Type es "HttpRequestException"; usa Retry para cortes intermitentes.
La solicitud PUT 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. Incluye https://.
'url' es obligatorio.La expresión de url dio nulo.

Reemplazar los datos de un cliente y confirmar el resultado:

HTTP PUT
url = "https://api.erp.com/clientes/" + clienteId
body = new Dictionary<string, object> { ["nombre"] = nuevoNombre, ["nit"] = nit, ["activo"] = false }
authorization = { "type": "bearer", "token": credential("api-erp")["value"] }
→ output: resp
Log message = "Cliente " + clienteId + " actualizado (HTTP " + resp.StatusCode + ")"