{"id":13052,"date":"2015-07-31T16:11:16","date_gmt":"2015-07-31T23:11:16","guid":{"rendered":"http:\/\/clartechsolutions.com\/?p=13052"},"modified":"2023-03-01T01:41:17","modified_gmt":"2023-03-01T01:41:17","slug":"consumiendo-rest-web-services-externos-en-apex-5-0","status":"publish","type":"post","link":"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/","title":{"rendered":"Consumiendo REST Web Services Externos en APEX 5.0"},"content":{"rendered":"<p>La gran mayor\u00eda de las aplicaciones hoy en d\u00eda de una u otra manera terminan consumiendo servicios web, es por ello que es muy grato saber que Apex nos provee todo lo necesario para poder consumir servicios web ya sea internos desde nuestra base de datos como tambi\u00e9n servicios web externos a nuestra aplicaci\u00f3n.<\/p>\n<p>Todas las grandes compa\u00f1\u00edas ofrecen servicios web como Facebook, Flickr, YouTube, LinkedIn y muchas m\u00e1s, y a medida que m\u00e1s y m\u00e1s aplicaciones tienden a interconectarse con todos estos servicios, es necesario que podamos aprovechar todas estas funcionalidades para enriquecer nuestras aplicaciones y sin duda para eso necesitamos conocer c\u00f3mo &#8220;consumir&#8221; o &#8220;producir\u201d RESTful Web Services. Para la fortuna de todos, Apex 5.0 tiene una manera simple y directa de consumir Servicios Web.<\/p>\n<p>En este art\u00edculo quiero compartir con todos lo que aprend\u00ed al tener que utilizar un recurso web externo en mi aplicaci\u00f3n en Apex.<\/p>\n<p>El ejemplo que veremos a continuaci\u00f3n se basa en un servicio web externo y como con Apex podemos consumir los datos desde el archivo XML.<\/p>\n<p>Lo primero que necesitamos tener en cuenta es cu\u00e1l es el servicio web que vamos a utilizar.<\/p>\n<h3>Identificar el servicio Web que deseamos utilizar<\/h3>\n<p>Para este ejemplo vamos a utilizar el servicio web que nos provee la \u201cFederal Aviation Administration\u201d del Departamento de Transporte de Estados Unidos.<\/p>\n<p><a href=\"http:\/\/services.faa.gov\/docs\/services\/airport\/\">http:\/\/services.faa.gov\/docs\/services\/airport\/<\/a><\/p>\n<p>Este Servicio obtiene el estado del aeropuerto para cualquier aeropuerto importante, incluyendo demoras conocidas y datos meteorol\u00f3gicos del NOAA. (National Oceanic and Atmospheric Administration)<\/p>\n<p>Para utilizar un servicio web necesitamos de primera instancia conocer la URI. Un URI (Uniform Resource Identifier) que en espa\u00f1ol es un Identificador Uniforme de Recursos, sirve para identificar recursos en Internet. La URL es simplemente un subgrupo dentro de la URI.<\/p>\n<p>El Servicio web nos provee de la siguiente informaci\u00f3n:<\/p>\n<p>URI: <a href=\"http:\/\/services.faa.gov\/airport\/status\/airportCode\">http:\/\/services.faa.gov\/airport\/status\/airportCode<\/a><\/p>\n<p>M\u00e9todo HTTP:<\/p>\n<p style=\"padding-left: 40px;\">GET<\/p>\n<p>Par\u00e1metros:<\/p>\n<p style=\"padding-left: 40px;\"><em>Todos los siguientes par\u00e1metros son requeridos:<\/em><\/p>\n<p style=\"padding-left: 40px;\"><strong>airportCode<\/strong>. Requerido. Es necesario ingresar el c\u00f3digo del aeropuerto de tres letras para recuperar los datos y mostrarlos en la aplicaci\u00f3n, por ejemplo, &#8220;SFO&#8221; que representa el aeropuerto \u201cSan Francisco International\u201d<\/p>\n<p>Ejemplo de Solicitud XML:<\/p>\n<p><a href=\"http:\/\/services.faa.gov\/airport\/status\/SFO?format=application\/xml\">http:\/\/services.faa.gov\/airport\/status\/SFO?format=application\/xml<\/a><\/p>\n<p>Cuando ingresamos la URI en nuestro navegador podemos ver el resultado del servicio web en formato XML y en base a dicha visualizaci\u00f3n podemos determinar qu\u00e9 datos vamos a mostrar en nuestra aplicaci\u00f3n. Claro que lo m\u00e1s importante es que cuando consumimos servicios web estudiemos bien la API del servicio ya que all\u00ed podemos encontrar la informaci\u00f3n de los par\u00e1metros requeridos y los opcionales.<\/p>\n<p>En la imagen de abajo, (resaltado con flechas naranjas), definimos los datos que vamos a mostrar en la aplicaci\u00f3n.<\/p>\n<p>Datos que consumiremos: <strong>Delay, IATA, State, Name, Visibility, Weather, Temp, Wind, City.<\/strong><\/p>\n<p><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-13053\" src=\"https:\/\/i0.wp.com\/clartechsolutions.com\/wp-content\/uploads\/2019\/04\/img01.jpg?resize=531%2C724\" alt=\"\" width=\"531\" height=\"724\"><\/p>\n<p>Como podemos ver en el URI de ejemplo:<\/p>\n<p><a href=\"http:\/\/services.faa.gov\/airport\/status\/SFO?format=application\/xml\">http:\/\/services.faa.gov\/airport\/status\/SFO?format=application\/xml<\/a><\/p>\n<p><strong>SFO<\/strong> representa el par\u00e1metro <strong>airportCode<\/strong> y necesitamos adem\u00e1s indicar qu\u00e9 tipo de formato ser\u00e1 usado, en este caso el tipo es xml, por ello vamos a tener otro par\u00e1metro llamado <strong>Format<\/strong> que utilizaremos como par\u00e1metros de entrada en nuestra aplicaci\u00f3n para solicitar el servicio web.<\/p>\n<h3>Crear Aplicaci\u00f3n de Escritorio en Blanco<\/h3>\n<p>Ahora es momento de pasar a Apex y crear una Aplicaci\u00f3n en blanco de tipo Escritorio, la llamaremos <strong>RESTful Services Demo.<\/strong><\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full wp-image-13054\" src=\"https:\/\/i0.wp.com\/clartechsolutions.com\/wp-content\/uploads\/2019\/04\/img02.jpg?resize=750%2C309\" alt=\"\" width=\"750\" height=\"309\"><\/p>\n<p>Est\u00e1 de m\u00e1s decir, pero para trabajar con Servicios Web, debemos tenerlo habilitado en nuestra aplicaci\u00f3n.<\/p>\n<h3>Crear Referencias de Servicios Web<\/h3>\n<p>Desde la p\u00e1gina de inicio de la aplicaci\u00f3n <strong>RESTful Services Demo<\/strong> reci\u00e9n creada nos dirigimos a Componentes Compartidos.<\/p>\n<p>En la secci\u00f3n <strong>Referencias de Datos<\/strong> hacemos clic en <strong>Referencias de Servicios Web<\/strong>.<\/p>\n<p>Para crear una nueva Referencia de Servicio Web, hacemos clic en el bot\u00f3n <strong>Crear &gt;<\/strong><\/p>\n<p>Se inicia el asistente para crear la Referencia de Servicio Web.<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" class=\"alignnone size-full wp-image-13055\" src=\"https:\/\/i0.wp.com\/clartechsolutions.com\/wp-content\/uploads\/2019\/04\/img03.jpg?resize=750%2C443\" alt=\"\" width=\"750\" height=\"443\"><\/p>\n<p>Seleccionamos <strong>REST<\/strong> y hacemos clic en el bot\u00f3n <strong>Siguiente &gt;<\/strong><\/p>\n<p>En <strong>Detalles de REST<\/strong> ingresamos los siguientes Datos:<\/p>\n<p style=\"padding-left: 40px;\">Nombre: <strong>AirportStatus<\/strong><\/p>\n<p style=\"padding-left: 40px;\">URL: <a href=\"http:\/\/services.faa.gov\/airport\/status\">http:\/\/services.faa.gov\/airport\/status<\/a><\/p>\n<p style=\"padding-left: 40px;\">Proxy: <a href=\"http:\/\/www-proxy.us.oracle.com\">http:\/\/www-proxy.us.oracle.com<\/a><\/p>\n<p style=\"padding-left: 40px;\">M\u00e9todo HTTP: <strong>GET<\/strong><\/p>\n<p style=\"padding-left: 40px;\">Autenticaci\u00f3n B\u00e1sica: <strong>No<\/strong><\/p>\n<p>No agregamos ninguna cabecera<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13056\" src=\"https:\/\/i0.wp.com\/clartechsolutions.com\/wp-content\/uploads\/2019\/04\/img04.jpg?resize=750%2C613\" alt=\"\" width=\"750\" height=\"613\"><\/p>\n<p>Click on the button <strong>Siguiente &gt;<\/strong><\/p>\n<p>En <strong>Entradas REST<\/strong> vamos a a\u00f1adir los dos par\u00e1metros que necesitamos para realizar la solicitud.<\/p>\n<p style=\"padding-left: 40px;\">AirportCode: Cadena<\/p>\n<p style=\"padding-left: 40px;\">Format: Cadena<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13057\" src=\"https:\/\/i0.wp.com\/clartechsolutions.com\/wp-content\/uploads\/2019\/04\/img05.jpg?resize=750%2C603\" alt=\"\" width=\"750\" height=\"603\"><\/p>\n<p>Click on the button <strong>Siguiente &gt;<\/strong><\/p>\n<p>En <strong>Salidas REST<\/strong> configuramos los siguientes datos:<\/p>\n<ul>\n<li>Formato de Salida: <strong>XML<\/strong><\/li>\n<li>XPath a Par\u00e1metros de Salida:<strong> \/AirportStatus<\/strong><\/li>\n<\/ul>\n<p style=\"padding-left: 40px;\">Es muy importante conocer el <em>XPath a Par\u00e1metros de Salida<\/em>, si observamos la salida XML de ejemplo podemos ver que la primer etiqueta se llama <strong>AirportStatus <\/strong>y luego se desprenden las dem\u00e1s etiquetas en jerarqu\u00eda hacia abajo, el cual nos indica donde est\u00e1 el dato a consumir en el archivo XML, como vamos a mostrar datos de distintas partes del XML usaremos la primer etiqueta para que sea nuestro punto de partida del XPath.<\/p>\n<ul>\n<li>Par\u00e1metros de Salida REST<\/li>\n<\/ul>\n<table>\n<tbody>\n<tr>\n<td width=\"120\"><strong>Name<\/strong><\/td>\n<td width=\"180\"><strong>Ruta de Acceso<\/strong><\/td>\n<td width=\"144\"><strong>Tipo<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"120\">State<\/td>\n<td width=\"180\">\/State<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">City<\/td>\n<td width=\"180\">\/City<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">Name<\/td>\n<td width=\"180\">\/Name<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">IATA<\/td>\n<td width=\"180\">\/IATA<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">Temp<\/td>\n<td width=\"180\">\/Weather\/Temp<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">Weather<\/td>\n<td width=\"180\">\/Weather\/Weather<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">Visibility<\/td>\n<td width=\"180\">\/Weather\/Visibility<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">Wind<\/td>\n<td width=\"180\">\/Weather\/Wind<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"120\">Delay<\/td>\n<td width=\"180\">\/Delay<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16024\" data-permalink=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/img06\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img06.jpg?fit=785%2C680&amp;ssl=1\" data-orig-size=\"785,680\" data-comments-opened=\"1\" data-image-meta=\"{&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;created_timestamp&quot;:&quot;1438361466&quot;}\" data-image-title=\"img06\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img06.jpg?fit=750%2C650&amp;ssl=1\" class=\"alignnone wp-image-16024 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img06.jpg?resize=750%2C650&#038;ssl=1\" alt=\"\" width=\"750\" height=\"650\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img06.jpg?w=785&amp;ssl=1 785w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img06.jpg?resize=300%2C260&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img06.jpg?resize=768%2C665&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img06.jpg?resize=14%2C12&amp;ssl=1 14w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Click on the button <strong>Crear<\/strong><\/p>\n<p>Podemos visualizar que se ha creado una nueva referencia de Servicio Web.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16025\" data-permalink=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/img07\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img07.jpg?fit=829%2C243&amp;ssl=1\" data-orig-size=\"829,243\" data-comments-opened=\"1\" data-image-meta=\"{&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;created_timestamp&quot;:&quot;1438361619&quot;}\" data-image-title=\"img07\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img07.jpg?fit=750%2C220&amp;ssl=1\" class=\"alignnone wp-image-16025 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img07.jpg?resize=750%2C220&#038;ssl=1\" alt=\"\" width=\"750\" height=\"220\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img07.jpg?w=829&amp;ssl=1 829w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img07.jpg?resize=300%2C88&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img07.jpg?resize=768%2C225&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img07.jpg?resize=18%2C5&amp;ssl=1 18w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<h3>Probar El Servicio Web<\/h3>\n<p>Podemos probar la referencia haciendo clic en el bot\u00f3n de \u201c<strong>play<\/strong>\u201d<\/p>\n<p>Ingresamos los Par\u00e1metros de Entrada:<\/p>\n<p style=\"padding-left: 40px;\">AirportCode: <strong>SFO<\/strong><\/p>\n<p style=\"padding-left: 40px;\">Format: <strong>Application\/xml<\/strong><\/p>\n<p>Y hacemos clic en el bot\u00f3n <strong>Probar<\/strong><\/p>\n<p>En la ficha <strong>Respuesta<\/strong> podemos ver la salida del archivo XML.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16026\" data-permalink=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/img08\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img08.jpg?fit=610%2C540&amp;ssl=1\" data-orig-size=\"610,540\" data-comments-opened=\"1\" data-image-meta=\"{&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;created_timestamp&quot;:&quot;1438361836&quot;}\" data-image-title=\"img08\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img08.jpg?fit=610%2C540&amp;ssl=1\" class=\"alignnone wp-image-16026 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img08.jpg?resize=610%2C540&#038;ssl=1\" alt=\"\" width=\"610\" height=\"540\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img08.jpg?w=610&amp;ssl=1 610w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img08.jpg?resize=300%2C266&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img08.jpg?resize=14%2C12&amp;ssl=1 14w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><\/p>\n<h3>Crear P\u00e1gina Pantalla e Informe Basados en Servicio Web<\/h3>\n<p>Desde la p\u00e1gina de Inicio de la Aplicaci\u00f3n hacemos clic en el bot\u00f3n <strong>Crear P\u00e1gina &gt;<\/strong><\/p>\n<p>Interfaz de usuario: <strong>Escritorio<\/strong><\/p>\n<p>Seleccione un Tipo de P\u00e1gina: Pantalla&nbsp; &#8212; <strong>Pantalla e Informe Basados en Servicio Web<\/strong>.<\/p>\n<ol>\n<li>En el paso \u201cSeleccionar Servicio y Operaci\u00f3n\u201d\n<ol>\n<li>Referencia de Servicio Web: <strong>AirportStatus<\/strong><\/li>\n<li>Tipo de Referencia de Servicio Web: <strong>RESTful<\/strong><\/li>\n<li>Operaci\u00f3n: <strong>doREST<\/strong><\/li>\n<li>Click on the button <strong>Siguiente<\/strong><\/li>\n<\/ol>\n<\/li>\n<li>En el paso \u201cAtributos de P\u00e1gina y de Regi\u00f3n\u201d\n<ol>\n<li>Aceptamos los valores por defecto y hacemos clic en el bot\u00f3n <strong>Siguiente<\/strong><\/li>\n<\/ol>\n<\/li>\n<li>En el paso \u201cElementos de Entrada\u201d\n<ol>\n<li>Nombre del Elemento: <strong>P2_AIRPORTCODE<\/strong> &#8212; Crear: <strong>S\u00ed<\/strong><\/li>\n<li>Nombre del Elemento: <strong>P2_FORMAT<\/strong> &#8212; Crear: <strong>S\u00ed<\/strong><\/li>\n<li>Click on the button <strong>Siguiente<\/strong><\/li>\n<\/ol>\n<\/li>\n<li>En el paso \u201cPar\u00e1metros del Informe\u201d\n<ol>\n<li>Seleccionamos y tildamos todos los par\u00e1metros del Informe<img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16027\" data-permalink=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/img09\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img09.jpg?fit=791%2C587&amp;ssl=1\" data-orig-size=\"791,587\" data-comments-opened=\"1\" data-image-meta=\"{&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;created_timestamp&quot;:&quot;1438362449&quot;}\" data-image-title=\"img09\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img09.jpg?fit=750%2C557&amp;ssl=1\" class=\"alignnone wp-image-16027 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img09.jpg?resize=750%2C557&#038;ssl=1\" alt=\"\" width=\"750\" height=\"557\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img09.jpg?w=791&amp;ssl=1 791w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img09.jpg?resize=300%2C223&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img09.jpg?resize=768%2C570&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img09.jpg?resize=16%2C12&amp;ssl=1 16w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/li>\n<li>Click on the button <strong>Siguiente<\/strong><\/li>\n<\/ol>\n<\/li>\n<li>En el paso \u201cMen\u00fa de Navegaci\u00f3n\u201d\n<ol>\n<li>Preferencia de Navegaci\u00f3n: <strong>Crear nueva entrada del men\u00fa de navegaci\u00f3n<\/strong><\/li>\n<li>Nueva Entrada del Men\u00fa de Navegaci\u00f3n: <strong>RESTful Services Demo<\/strong><\/li>\n<li>Entrada de Men\u00fa de Navegaci\u00f3n Principal: Seleccionado <strong>Inicio<\/strong><\/li>\n<li>Click on the button <strong>Siguiente<\/strong><\/li>\n<\/ol>\n<\/li>\n<li>En el paso \u201cConfirmar\u201d\n<ol>\n<li>Verificamos los datos y hacemos clic en el bot\u00f3n <strong>Crear<\/strong><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3>Ejecutar la Aplicaci\u00f3n<\/h3>\n<p>Desde la p\u00e1gina de Inicio de la Aplicaci\u00f3n hacemos clic en el icono \u201c<strong>Ejecutar Aplicaci\u00f3n<\/strong>\u201d<\/p>\n<p>Iniciamos la sesi\u00f3n ingresando nuestras credenciales y accedemos a la P\u00e1gina \u201cRESTful Services Demo\u201d<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16028\" data-permalink=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/img10-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?fit=1595%2C422&amp;ssl=1\" data-orig-size=\"1595,422\" data-comments-opened=\"1\" data-image-meta=\"{&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;created_timestamp&quot;:&quot;1438362851&quot;}\" data-image-title=\"img10\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?fit=750%2C198&amp;ssl=1\" class=\"alignnone wp-image-16028 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=750%2C198&#038;ssl=1\" alt=\"\" width=\"750\" height=\"198\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?w=1595&amp;ssl=1 1595w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=300%2C79&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=1024%2C271&amp;ssl=1 1024w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=768%2C203&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=1536%2C406&amp;ssl=1 1536w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=18%2C5&amp;ssl=1 18w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=1200%2C317&amp;ssl=1 1200w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img10.jpg?resize=1568%2C415&amp;ssl=1 1568w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Es el momento de probar el consumo del Servicio Web que creamos, para ello ingresamos los siguientes par\u00e1metros de entrada:<\/p>\n<p style=\"padding-left: 40px;\">Airportcode: <strong>SNA<\/strong><\/p>\n<p style=\"padding-left: 40px;\">Format: <strong>Application\/xml<\/strong><\/p>\n<p>Click on the button <strong>Ejecutar<\/strong><\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16029\" data-permalink=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/img11-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?fit=1170%2C467&amp;ssl=1\" data-orig-size=\"1170,467\" data-comments-opened=\"1\" data-image-meta=\"{&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;created_timestamp&quot;:&quot;1438363027&quot;}\" data-image-title=\"img11\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?fit=750%2C300&amp;ssl=1\" class=\"alignnone wp-image-16029 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?resize=750%2C299&#038;ssl=1\" alt=\"\" width=\"750\" height=\"299\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?w=1170&amp;ssl=1 1170w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?resize=300%2C120&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?resize=1024%2C409&amp;ssl=1 1024w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?resize=768%2C307&amp;ssl=1 768w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img11.jpg?resize=18%2C7&amp;ssl=1 18w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Como podemos ver, Apex nos facilita en gran medida el consumo de Servicios Web externos para ser utilizados en nuestras aplicaciones web.<\/p>\n<h3>Ejemplo Archivo XML con atributos<\/h3>\n<p>Antes de terminar s\u00f3lo quiero mostrar otro ejemplo de archivo XML el cual dentro de las etiquetas que representan los elementos del archivo XML podemos tener atributos que nos dan informaci\u00f3n adicional sobre el elemento por medio del valor que llevan asociado.<\/p>\n<p>Tenemos esta URI para el consumo de Servicios Web:<\/p>\n<p><a href=\"http:\/\/api.openweathermap.org\/data\/2.5\/weather?q=London&amp;mode=xml\">http:\/\/api.openweathermap.org\/data\/2.5\/weather?q=London&amp;mode=xml<\/a><\/p>\n<p>Que tiene dos par\u00e1metros:<\/p>\n<p>q = Ciudad<\/p>\n<p>mode = xml<\/p>\n<p>El Archivo XML se muestra de la siguiente forma:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16030\" data-permalink=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/img12-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img12.jpg?fit=692%2C506&amp;ssl=1\" data-orig-size=\"692,506\" data-comments-opened=\"1\" data-image-meta=\"{&quot;credit&quot;:&quot;Clarisa Maman Orfali&quot;,&quot;created_timestamp&quot;:&quot;1438377168&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"img12\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img12.jpg?fit=692%2C506&amp;ssl=1\" class=\"alignnone wp-image-16030 size-full\" src=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img12.jpg?resize=692%2C506&#038;ssl=1\" alt=\"\" width=\"692\" height=\"506\" srcset=\"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img12.jpg?w=692&amp;ssl=1 692w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img12.jpg?resize=300%2C219&amp;ssl=1 300w, https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/img12.jpg?resize=16%2C12&amp;ssl=1 16w\" sizes=\"(max-width: 692px) 100vw, 692px\" \/><\/p>\n<p>Como podemos observar la estructura del archivo es diferente a la que vimos en el primer ejemplo.<\/p>\n<p>Cuando estamos configurando la Referencia del Servicio Web en los Par\u00e1metros de Salida debemos ingresar la Ruta de Acceso, y en el caso de que el elemento contenga atributos var\u00eda la forma que en se representa el acceso a los datos, agregando la @ antes del nombre del atributo.<\/p>\n<p>Por ejemplo para mostrar los par\u00e1metros de Salida de Pa\u00eds, Temperatura, Temperatura M\u00ednima, Temperatura M\u00e1xima, Longitud, Latitud y Velocidad del Viento, debemos configurarlos de la siguiente manera:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"150\"><strong>Name<\/strong><\/td>\n<td width=\"150\"><strong>Ruta de Acceso<\/strong><\/td>\n<td width=\"144\"><strong>Tipo<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"150\">Country<\/td>\n<td width=\"150\">\/city\/country<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"150\">Temperatura<\/td>\n<td width=\"150\">\/temerature\/@value<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"150\">Temp Min<\/td>\n<td width=\"150\">\/temerature\/@min<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"150\">Temp Max<\/td>\n<td width=\"150\">\/temerature\/@max<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"150\">Longitud<\/td>\n<td width=\"150\">\/city\/coord.\/@lon<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"150\">Latitud<\/td>\n<td width=\"150\">\/city\/coord.\/@lat<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<tr>\n<td width=\"150\">Velocidad del Viento<\/td>\n<td width=\"150\">\/wind\/speed\/@value<\/td>\n<td width=\"144\">Cadena<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>De esta forma podemos consumir los datos desde Apex seg\u00fan la estructura del Archivo XML.<\/p>\n<h3>Conclusion<\/h3>\n<p>Finalmente, seg\u00fan mi opini\u00f3n, lo m\u00e1s m\u00e1s importante en este caso es identificar el servicio web externo que vamos a usar e identificar la URI con sus respectivos par\u00e1metros de entrada requeridos porque el resto como pudimos observar es muy simple de configurar, gracias a los asistentes que nos provee Apex.<\/p>\n<p>Hemos aprendido en este art\u00edculo a:<\/p>\n<ul>\n<li>Identificar el Servicio Web que deseamos utilizar<\/li>\n<li>Crear una Referencia de Servicio Web en Apex<\/li>\n<li>Crear una P\u00e1gina del tipo Pantalla e Informe Basados en Servicio Web<\/li>\n<li>Consumir Servicios Web RESTful Externos<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>La gran mayor\u00eda de las aplicaciones hoy en d\u00eda de una u otra manera terminan consumiendo servicios web, es por ello que es muy grato saber que Apex nos provee todo lo necesario para poder consumir servicios web ya sea internos desde nuestra base de datos como tambi\u00e9n servicios web externos a nuestra aplicaci\u00f3n. Todas<a class=\"more-link\" href=\"https:\/\/kiusi.com\/en\/consumiendo-rest-web-services-externos-en-apex-5-0\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Consumiendo REST Web Services Externos en APEX 5.0&#8221;<\/span><\/a><\/p>","protected":false},"author":132749711,"featured_media":16458,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":true},"categories":[121913,121930],"tags":[121903,121929,121886,121945],"class_list":["post-13052","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-oracle-apex-5-0","tag-apex","tag-apex-5-0","tag-oracle","tag-webservices","entry"],"jetpack_publicize_connections":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paMvMS-3ow","amp_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/kiusi.com\/wp-content\/uploads\/2015\/07\/Destacada-Nuevo-Consumiendo-REST-Web-Services-Externos-en-APEX-5.0.jpg?fit=2949%2C1735&ssl=1","_links":{"self":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts\/13052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/users\/132749711"}],"replies":[{"embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/comments?post=13052"}],"version-history":[{"count":3,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts\/13052\/revisions"}],"predecessor-version":[{"id":16459,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/posts\/13052\/revisions\/16459"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/media\/16458"}],"wp:attachment":[{"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/media?parent=13052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/categories?post=13052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kiusi.com\/en\/wp-json\/wp\/v2\/tags?post=13052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}