En aquest mòdul, aprendrem com integrar RPG amb serveis web, una habilitat essencial per a la programació moderna. Els serveis web permeten que les aplicacions es comuniquin entre si a través d'Internet, utilitzant protocols estàndard com HTTP i formats de dades com XML i JSON.
Objectius del Mòdul
- Entendre què són els serveis web i com funcionen.
 - Aprendre a consumir serveis web des d'un programa RPG.
 - Aprendre a crear serveis web utilitzant RPG.
 
Què són els Serveis Web?
Els serveis web són aplicacions que permeten la comunicació entre diferents sistemes a través d'Internet. Utilitzen protocols estàndard com HTTP per enviar i rebre dades en formats com XML o JSON.
Tipus de Serveis Web
- SOAP (Simple Object Access Protocol): Utilitza XML per a la missatgeria i és conegut per la seva robustesa i seguretat.
 - REST (Representational State Transfer): Utilitza HTTP i és més lleuger i fàcil d'implementar que SOAP. Les dades es poden enviar en formats com JSON o XML.
 
Consumint Serveis Web des d'un Programa RPG
Pas 1: Configuració de l'Entorn
Abans de començar, assegura't que el teu entorn de desenvolupament RPG estigui configurat per suportar la comunicació HTTP. Això pot requerir la instal·lació de biblioteques addicionals o la configuració de permisos de xarxa.
Pas 2: Exemple de Consum de Servei Web REST
A continuació, es mostra un exemple de com consumir un servei web REST que retorna dades en format JSON.
Exemple de Codi
**free
ctl-opt dftactgrp(*no) actgrp('QILE');
dcl-pr HttpGet pointer extproc('QtmhGetEnv');
  envVar char(100) const;
  envVal char(100) options(*varsize);
end-pr;
dcl-s url char(256) inz('http://api.example.com/data');
dcl-s response char(1024);
dcl-pr HttpRequest int(10) extproc('QtmhGetEnv');
  url char(256) const;
  response char(1024) options(*varsize);
end-pr;
dcl-pr ParseJson int(10) extproc('QtmhGetEnv');
  json char(1024) const;
  data char(256) options(*varsize);
end-pr;
dcl-s data char(256);
HttpRequest(url: response);
ParseJson(response: data);
dsply data;
*inlr = *on;Explicació del Codi
- Declaració de Procediments Externs: 
HttpGet,HttpRequest, iParseJsonsón procediments externs que s'utilitzen per fer la sol·licitud HTTP i processar la resposta JSON. - Variables: 
urlconté l'URL del servei web,responseemmagatzema la resposta del servei web, idataemmagatzema les dades processades. - Sol·licitud HTTP: 
HttpRequestenvia una sol·licitud GET a l'URL especificat i emmagatzema la resposta enresponse. - Processament de JSON: 
ParseJsonprocessa la resposta JSON i emmagatzema les dades endata. - Visualització de Dades: 
dsply datamostra les dades processades. 
Pas 3: Tractament d'Errors
És important gestionar els errors que poden ocórrer durant la comunicació amb el servei web. Això pot incloure la gestió de codis d'estat HTTP i la validació de la resposta JSON.
Creant Serveis Web amb RPG
Pas 1: Configuració del Servei
Per crear un servei web amb RPG, necessitaràs configurar el teu servidor per acceptar sol·licituds HTTP i processar-les amb programes RPG.
Pas 2: Exemple de Creació de Servei Web REST
A continuació, es mostra un exemple de com crear un servei web REST que retorna dades en format JSON.
Exemple de Codi
**free
ctl-opt dftactgrp(*no) actgrp('QILE');
dcl-pr HttpResponse int(10) extproc('QtmhWrStout');
  response char(1024) const;
end-pr;
dcl-s jsonResponse char(1024);
jsonResponse = '{ "message": "Hello, World!" }';
HttpResponse(jsonResponse);
*inlr = *on;Explicació del Codi
- Declaració de Procediments Externs: 
HttpResponseés un procediment extern que s'utilitza per enviar la resposta HTTP. - Variable: 
jsonResponseconté la resposta JSON que es retornarà al client. - Resposta HTTP: 
HttpResponseenvia la resposta JSON al client. 
Pas 3: Proves i Depuració
Prova el teu servei web utilitzant eines com Postman o cURL per assegurar-te que funciona correctament. Depura qualsevol problema que pugui sorgir durant les proves.
Exercicis Pràctics
Exercici 1: Consumir un Servei Web REST
- Troba un servei web públic que retorni dades en format JSON.
 - Escriu un programa RPG que consumeixi aquest servei web i mostri les dades retornades.
 
Exercici 2: Crear un Servei Web REST
- Escriu un programa RPG que creï un servei web REST que retorni un missatge personalitzat en format JSON.
 - Prova el teu servei web utilitzant una eina com Postman.
 
Solucions als Exercicis
Solució a l'Exercici 1
**free
ctl-opt dftactgrp(*no) actgrp('QILE');
dcl-pr HttpRequest int(10) extproc('QtmhGetEnv');
  url char(256) const;
  response char(1024) options(*varsize);
end-pr;
dcl-pr ParseJson int(10) extproc('QtmhGetEnv');
  json char(1024) const;
  data char(256) options(*varsize);
end-pr;
dcl-s url char(256) inz('http://api.example.com/data');
dcl-s response char(1024);
dcl-s data char(256);
HttpRequest(url: response);
ParseJson(response: data);
dsply data;
*inlr = *on;Solució a l'Exercici 2
**free
ctl-opt dftactgrp(*no) actgrp('QILE');
dcl-pr HttpResponse int(10) extproc('QtmhWrStout');
  response char(1024) const;
end-pr;
dcl-s jsonResponse char(1024);
jsonResponse = '{ "message": "Hello, RPG World!" }';
HttpResponse(jsonResponse);
*inlr = *on;Resum
En aquest mòdul, hem après què són els serveis web i com consumir i crear serveis web utilitzant RPG. Hem vist exemples pràctics de codi i hem realitzat exercicis per reforçar els conceptes apresos. Amb aquestes habilitats, estaràs preparat per integrar RPG amb tecnologies modernes i crear aplicacions més robustes i interconnectades.
Curs de Programació RPG
Mòdul 1: Introducció a la Programació RPG
- Què és RPG?
 - Configuració del Teu Entorn de Desenvolupament
 - Sintaxi i Estructura Bàsiques
 - Programa Hello World
 
Mòdul 2: Conceptes Bàsics
Mòdul 3: Treballant amb Dades
Mòdul 4: Tècniques Avançades de Programació
Mòdul 5: RPG IV i Més Enllà
Mòdul 6: Integrant RPG amb Tecnologies Modernes
Mòdul 7: Aplicacions del Món Real
- Construint una Aplicació Simple
 - Estudi de Cas: Sistema de Gestió d'Inventari
 - Estudi de Cas: Sistema de Nòmines
 - Millors Pràctiques i Revisió de Codi
 
