HTTP callouts: Http, HttpRequest, HttpResponse
Un callout son tres objetos: la petición que montas (HttpRequest), el que la envía (Http) y la respuesta que vuelve (HttpResponse). Y una regla: mirar siempre el código de estado antes de fiarte del cuerpo.
✓ En esta sub-lección
- 01Montar y enviar una petición HTTP desde Apex.
- 02Leer el código de estado y el cuerpo de la respuesta.
- 03Conocer los límites de los callouts: cuántos y cuánto tiempo.
La nutria: ¿Te acuerdas? · Repaso del Módulo 10
¿Qué hace un test cuando el código llama a un sistema externo?
Durante tres módulos, el código que llamaba al ERP venía hecho, como una caja cerrada. Ahora el equipo de cuentas quiere algo nuevo: consultar en el ERP el estado de una renovación concreta, desde Salesforce. Es la primera llamada que vas a escribir tú, línea a línea.
Tres objetos
HttpRequest req = new HttpRequest(); // 1 · la petición
req.setEndpoint('callout:ERP/renewals/ERP-100'); // a dónde
req.setMethod('GET'); // qué quieres hacer
Http http = new Http(); // 2 · el que la envía
HttpResponse res = http.send(req); // 3 · la respuesta
Integer status = res.getStatusCode(); // 200, 404, 500…
String body = res.getBody(); // el contenido, normalmente JSONEl método dice qué quieres hacer: GET para leer, POST para crear, PUT o PATCH para cambiar, DELETE para borrar. Si envías datos, van en el cuerpo con setBody y una cabecera que diga en qué formato: setHeader('Content-Type', 'application/json'). La dirección empieza por callout:ERP porque es una : la verás en la lección 3.
LA PETICIÓN
GET callout:ERP/renewals/ERP-100 req.setTimeout(20000);
EL ERP CONTESTA…
El código de estado manda
Un error del otro sistema no lanza una excepción en Apex: http.send devuelve la respuesta y tu código sigue. Si el ERP contesta 404 (no existe) o 500 (se ha roto), el cuerpo no es lo que esperas. Por eso, antes de usar el cuerpo, mira getStatusCode(): 200 y 201 son éxito, 4xx es que la petición estaba mal, 5xx es que el otro sistema falló. Es el fallo que destapó el test del Módulo 10.
La nutria: ¿Y por qué no un Flow? Aquí Flow también llama