web services en apex

Web services en Oracle Apex

Web services en Oracle Apex son la mejor opción para intercambiar información entra sistemas de una forma fácil y sencilla es la conclusión que debería tener esta entrada, pero el camino siempre es lo que más se disfruta porque no es tan sencillo como parece, hay que gestionar permisos y somos dependientes de que la otra aplicación funcione correctamente, en el vídeo muestro algunos ejemplos de conexión que comparto en esta entrada.

 

architecture big

No olvides lo importante que es crear el Access Control List para poder darle permisos a tu usuario de base de datos para conectarse y resolver peticiones a un host determinado y también considerar agregar a un wallet el certificado en caso de que desees conectarte a un sitio que tenga certificado SSL de otra forma no podrás conectarte 🤨 y claro que debe ser creado con un usuario con permisos de sys.

En mi experiencia he usado web services para compartir información entre sistemas en lugar de usar DB Links, es más práctico y fácil, prefiero usar JSON a XML por lo simple que es leerlos y además que pesan mucho menos, no digo que no se debe usar XML pero en lo personal me gusta más JSON.

 

Vídeo

Código para guardar JSON en un blob

SET DEFINE OFF;

declare
    l_estatus NUMBER := 3; -- PDF Generado
	l_request	SYS.utl_http.req;
	l_response	SYS.utl_http.resp;
	l_download	RAW(32767);
    l_url_o varchar2(4000) := '//apexdevtesting.com:8080/ords/udemy/hr/employees/';
    l_url varchar2(200);
    l_plain varchar(4000);
  
begin
  
    l_request := SYS.utl_http.begin_request(l_url_o || 7566);

    
    SYS.utl_http.set_header(l_request, 'User-Agent', 'Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0');
    l_response := SYS.utl_http.get_response(l_request);
    
    LOOP
    BEGIN
        SYS.utl_http.read_raw(l_response, l_download);
        
        l_plain := UTL_RAW.CAST_TO_VARCHAR2 (l_download) ;
        
        DBMS_OUTPUT.put_line(l_plain);    
        
        INSERT INTO j_purchaseorder
         VALUES (SYS_GUID(),
          SYSTIMESTAMP,
          l_plain);
      --  dbms_lob.writeappend(l_file, utl_raw.LENGTH(l_download), l_download);
        EXCEPTION WHEN SYS.utl_http.end_of_body THEN
            EXIT;
        END;
    END LOOP;
    
    commit;
    SYS.utl_http.end_response(l_response);

end;

 

Recuperar archivo PDF de jasper (jasper es una interface restful y se puede contemplar como web services).

declare
    l_url	VARCHAR2(3000) := '//apexdevtesting.com:8081/jasperserver/rest_v2/reports/reports/Blank_Letter.pdf?STATUS=';
    l_request	SYS.utl_http.req;
	l_response	SYS.utl_http.resp;
    l_download	RAW(32767);
    l_file		BLOB;
	l_mimetype	VARCHAR2(50) := 'application/pdf';
	l_charset	VARCHAR2(50) := 'UTF8';
    l_filename varchar2(50) := 'archivo_'||ARCHIVOS_CARGADOS_SEQ.nextval||'.pdf';
    
begin
l_request := SYS.utl_http.begin_request(l_url ||'ASSIGNED&'||'j_username=jasperadmin'||'&'||'j_password=jasperadmin' );
                SYS.utl_http.set_header(l_request, 'User-Agent', 'Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0');
                
                l_response := SYS.utl_http.get_response(l_request);
                dbms_lob.createtemporary(l_file, TRUE, dbms_lob.SESSION);
                LOOP
                BEGIN
                    SYS.utl_http.read_raw(l_response, l_download);
                    dbms_lob.writeappend(l_file, utl_raw.LENGTH(l_download), l_download);
                    
                    INSERT INTO j_test2
                    VALUES (SYS_GUID(),
                      SYSTIMESTAMP,
                      l_file,
                      l_mimetype,
                      l_filename);
                    
                    EXCEPTION WHEN SYS.utl_http.end_of_body THEN
                        EXIT;
                    END;
                END LOOP;
                SYS.utl_http.end_response(l_response);
                commit;
end;

 

 

 

Ligas de interés

https://docs.oracle.com/database/121/SQLRF/functions092.htm#SQLRF56973

https://www.oracle.com/technetwork/es/developer-tools/apex-listener/overview/index.html 

Post sugerido:

Sweet Alert2 JS Oracle APEX

JS, AJAX, PROMESAS + PLSQL en APEX

Curso gratis de Oracle Apex en Español

Por favor si te sirvió el vídeo, invítame un café dando clic a los anuncios, me ayuda muchísimo para no dormir y poder hacer más posts 😎

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.