Oracle Forms + API REST - Envoi POST avec JSON
Objectif
Permettre à Oracle Forms d'envoyer des données JSON via une requête POST vers une API REST externe.
Exemple : Envoyer un nouveau client (nom, email, ville) vers un serveur tiers.
Étape 1 : Structure du formulaire Oracle Forms
Créer un bloc manuel nommé CLIENTS avec les champs :
- NOM_CLIENT (Text)
- EMAIL_CLIENT (Text)
- VILLE_CLIENT (Text)
- BTN_ENVOYER (Push Button)
Étape 2 : Création de la procédure PL/SQL POST
CREATE OR REPLACE PROCEDURE POST_CLIENT_REST(
p_nom IN VARCHAR2,
p_email IN VARCHAR2,
p_ville IN VARCHAR2,
p_status OUT VARCHAR2
)
IS
req UTL_HTTP.req;
resp UTL_HTTP.resp;
v_url VARCHAR2(2000) := '[Link]
v_body VARCHAR2(4000);
v_token VARCHAR2(100) := 'demo_token';
buffer VARCHAR2(32767);
BEGIN
v_body := '{"nom":"' || p_nom || '","email":"' || p_email || '","ville":"' || p_ville || '"}';
req := UTL_HTTP.begin_request(v_url, 'POST', 'HTTP/1.1');
UTL_HTTP.set_header(req, 'Content-Type', 'application/json');
UTL_HTTP.set_header(req, 'Authorization', 'Bearer ' || v_token);
UTL_HTTP.set_header(req, 'Content-Length', LENGTH(v_body));
UTL_HTTP.write_text(req, v_body);
resp := UTL_HTTP.get_response(req);
UTL_HTTP.read_line(resp, buffer, TRUE);
p_status := buffer;
UTL_HTTP.end_response(resp);
EXCEPTION
WHEN OTHERS THEN
p_status := 'Erreur: ' || SQLERRM;
END;
Étape 3 : Code sur le bouton BTN_ENVOYER
DECLARE
Oracle Forms + API REST - Envoi POST avec JSON
v_status VARCHAR2(32767);
BEGIN
POST_CLIENT_REST(:CLIENTS.NOM_CLIENT, :CLIENTS.EMAIL_CLIENT, :CLIENTS.VILLE_CLIENT, v_status);
MESSAGE('Résultat: ' || v_status);
END;
Étape 4 : Test et résultat
- Saisir un nom, email, et ville dans le formulaire
- Cliquer sur le bouton ENVOYER
- Le serveur recevra les données sous forme JSON
- Une confirmation ou un message d'erreur s'affiche
Remarques
- Le corps JSON est construit manuellement.
- Veiller à échapper les guillemets et caractères spéciaux.
- UTL_HTTP nécessite les ACL réseaux configurées pour l'hôte cible.