SlideShare ist ein Scribd-Unternehmen logo
1 von 23
SERVICIOS WEB
DESARROLLO DE APLICACIONES EN ENTORNO SERVIDOR
¿Qué es un servicio web?
 Es un servidor web que ofrece información cuyo destino no es una persona con
un navegador si no otra aplicación que “revenderá” dicha información al usuario
final.
 Las páginas de un servicio web pueden coexistir con la páginas web normales
accedidas por personas. El protocolo es también HTTP y el servidor web es el
mismo. Solo cambia el formato de las páginas. Las páginas de un servicio web
NO utilizan HTML sino XML o SOAP.
 Las páginas de un servicio web son más simples ya que la aplicación cliente solo
toma lo que necesita. No tiene sentido insertar publicidad o imágenes.
Ejemplo: Agencia Virtual de Viajes
USUARIO FINAL
AGENCIA DE VIAJES
VIRTUAL
IBERIA
LUFTHANSA
AIR FRANCE
LENGUAJES UTILIZADOS
 Todos están basados en XML
 Métodos
 GET
 POST
 Petición
 SOAP (Es más antiguo, rígido y complejo) Simple Object Access Protocol
 REST o RESTful (Es más moderno, flexible y simple) Representational State Transfer
 Respuesta
 SOAP
 XML – Extensible Markup Language
 JSON - JavaScript Object Notation
Ejemplo de petición SOAP
Ejemplo de petición REST (RESTful)
Uso de un Servicio Web en PHP
Respuesta del Servicio Web
object(stdClass)#1 (16) { ["id"]=> string(15)
"820587571095211" ["t"]=> string(4) "BBVA"
["e"]=> string(3) "BME" ["l"]=> string(4) "6.24"
["l_fix"]=> string(4) "6.24" ["l_cur"]=>
string(11) "€6.24" ["s"]=> string(1) "0"
["ltt"]=> string(13) "11:58AM GMT+1" ["lt"]=>
string(21) "Feb 17, 11:58AM GMT+1"
["lt_dts"]=> string(20) "2017-02-
17T11:58:29Z" ["c"]=> string(5) "-0.07"
["c_fix"]=> string(5) "-0.07" ["cp"]=> string(5)
"-1.09" ["cp_fix"]=> string(5) "-1.09"
["ccol"]=> string(3) "chr" ["pcls_fix"]=>
string(5) "6.314" }
Objeto PHP
VISUALIZACION DE LA RESPUESTA
Ejercicio: Google Finance
 Servicio Web
 https://www.google.com/finance
 Cotización de un valor en tiempo real
 API
 http://finance.google.com/finance/info?client=ig&q=BME%3AREP
 Respuesta JSON (Es necesario retirar algunos caracteres)
 Objetivo del ejercicio
 Test del API con la aplicación SoapUI
 Creación de un fichero PHP que visualice los datos más importante
Implementación
de un Servicio Web
// create SQL based on HTTP method
switch ($method) {
case 'GET':
$sql = "select * from `$table`".($key?" WHERE id=$key":''); break;
case 'PUT':
$sql = "update `$table` set $set where id=$key"; break;
case 'POST':
$sql = "insert into `$table` set $set"; break;
case 'DELETE':
$sql = "delete `$table` where id=$key"; break;
}
// excecute SQL statement
$result = mysqli_query($link,$sql);
// die if SQL statement failed
if (!$result) {
http_response_code(404);
die(mysqli_error());
}
// excecute SQL statement
$result = mysqli_query($link,$sql);
// die if SQL statement failed
if (!$result) {
http_response_code(404);
die(mysqli_error());
}
// print results, insert id or affected row count
if ($method == 'GET') {
if (!$key) echo '[';
for ($i=0;$i<mysqli_num_rows($result);$i++) {
echo ($i>0?',':'').json_encode(mysqli_fetch_object($result));
}
if (!$key) echo ']';
} elseif ($method == 'POST') {
echo mysqli_insert_id($link);
} else {
echo mysqli_affected_rows($link);
}
// close mysql connection
mysqli_close($link);
<?php
// get the HTTP method, path and body of the request
$method = $_SERVER['REQUEST_METHOD'];
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
$input = json_decode(file_get_contents('php://input'),true);
// connect to the mysql database
$link = mysqli_connect('localhost', 'user', 'pass', 'dbname');
mysqli_set_charset($link,'utf8');
// retrieve the table and key from the path
$table = preg_replace('/[^a-z0-9_]+/i','',array_shift($request));
$key = array_shift($request)+0;
// escape the columns and values from the input object
$columns = preg_replace('/[^a-z0-9_]+/i','',array_keys($input));
$values = array_map(function ($value) use ($link) {
if ($value===null) return null;
return mysqli_real_escape_string($link,(string)$value);
},array_values($input));
// build the SET part of the SQL command
$set = '';
for ($i=0;$i<count($columns);$i++) {
$set.=($i>0?',':'').'`'.$columns[$i].'`=';
$set.=($values[$i]===null?'NULL':'"'.$values[$i].'"');
}
Ejercicio: Diseño de un servicio Web
 Cliente
 Aplicación SoapUI
 Servicio Web
 Aplicación listar empleados de la tabla Scott
 Parámetros de entrada
 Petición GET
 Código empleado o nombre de empleado
 Tipo de respuesta JSON o XML (parámetro mode)
Caminos para el desarrollo
 Desarrollo descendente (Top-Down) o Primero el contrato:
 Se parte del archivo WSDL (contrato), que define el funcionamiento del servicio web
(interfaz), sin entrar en detalles de implementación. Por esto, se denomina desarrollo con
el contrato (archivo WSDL) por delante.
 Los programadores, tanto del servicio como de los consumidores del mismo, pueden
desarrollar en paralelo, asumiendo un comportamiento definido.
 Desarrollo ascendente (Bottom-Up) o Primero el código:
 Se parte de la implementación de las funcionalidades que el servicio exportará, para
llegar en último término al archivo WSDL (contrato).
 Los programadores de los consumidores del servicio deben esperar a que éste esté
completamente codificado y se haya generado el WSDL, para poder empezar a producir
invocaciones a sus métodos.
Ejercicio: OpenWeatherMap
 Servicio Web
 http://www.OpenWeatherMap.org
 Tiempo actual de un lugar
 API
 http://api.openweathermap.org/data/2.5/weather?q=Madrid&appid=5d3a300c7371f098
f448b4980871a592
 Respuesta JSON
 Objetivo del ejercicio
 Test del API con la aplicación SoapUI
 Creación de un fichero PHP que visualice los datos más importante
Ejercicio: INE
 Servicio Web
 http://www.ine.es/dyngs/DataLab/manual.html?cid=45
 Información del Instituto Nacional de Estadística
 API
 http://servicios.ine.es/wstempus/js/ES/DATOS_SERIE/{input}[?parámetros]
 Respuesta JSON
 Objetivo del ejercicio
 Test del API con la aplicación SoapUI
 Visualizar el número de ocupados (EPA87) y el número de parados (EPA86) del año 2016
WSDL
 Utilizado en los servicios SOAP
 Lenguaje basado en XML para describir servicios web
 Especifica la localización del servicio y las funcionalidades (métodos) que exporta.
 Ejemplo:
http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?
wsdl
WSLD – Elementos principales
Sección Uso
<types> Contenedor de definiciones de tipos de datos usados
por los mensajes de solicitud y de respuesta del
servicio web
<message> Mensajes enviados a y recibidos por el servicio web
Definición tipada de los datos que se transmiten
<portType> Lista de funciones que el servicio web exporta
Conjunto de operaciones soportadas por uno o más
puntos de término
<binding> Protocolo y especificación de formato de datos de un
tipo de puerto particular
<service> Servicio(s) expuesto(s)
Respuesta XML
object(SimpleXMLElement)#1 (2) { ["control"]=>
object(SimpleXMLElement)#3 (1) { ["cumun"]=>
string(3) "179" } ["municipiero"]=>
object(SimpleXMLElement)#2 (1) { ["muni"]=>
array(179) { [0]=> object(SimpleXMLElement)#4 (3) {
["nm"]=> string(7) "AJALVIR" ["locat"]=>
object(SimpleXMLElement)#183 (2) { ["cd"]=> string(2)
"28" ["cmc"]=> string(1) "2" } ["loine"]=>
object(SimpleXMLElement)#184 (2) { ["cp"]=> string(2)
"28" ["cm"]=> string(1) "2" } } [1]=>
object(SimpleXMLElement)#5 (3) { ["nm"]=> string(17)
"ALAMEDA DEL VALLE" ["locat"]=>
object(SimpleXMLElement)#184 (2) { ["cd"]=> string(2)
"28" ["cmc"]=> string(1) "3" } ["loine"]=>
object(SimpleXMLElement)#183 (2) { ["cp"]=> string(2)
"28" ["cm"]=> string(1) "3" } } [2]=>
object(SimpleXMLElement)#6 (3) { ["nm"]=> string(17)
"ALCALA DE HENARES" ["locat"]=>
object(SimpleXMLElement)#183 (2) { ["cd"]=> string(2)
"28" ["cmc"]=> string(1) "5" } ["loine"]=>
Objeto PHP
VISUALIZACION DE LA RESPUESTA
Ejercicio: Catastro Español (SOAP)
 Servicio Web
 http://www.catastro.meh.es/ayuda/lang/castellano/servicios_web.htm
 Información catastral de España
 API
 http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?wsdl
 SOAP
 Objetivo del ejercicio
 Test del API con la aplicación SoapUI
 Probar las distintas opciones de petición de información
 Crear un fichero PHP que realice una petición, introduzca la respuesta en un objeto XML
y realice un “var_dump” en pantalla de dicha variable
Ejercicio: Catastro Español (REST)
 Servicio Web
 http://www.catastro.meh.es/ayuda/lang/castellano/servicios_web.htm
 Información catastral de España
 API
 http://ovc.catastro.meh.es/ovcservweb/ovcswlocalizacionrc/ovccallejero.asmx/ConsultaVi
a?Provincia=MADRID&Municipio=MADRID&TipoVia=CL&NombreVia=padre claret
 Content-Type: text/xml
 Respuesta XML
 Objetivo del ejercicio
 Test del API con la aplicación SoapUI
 Creación de un fichero PHP que visualice los datos más importante
Resultado de los ejercicios
 Ejercicio Google Finance
 https://drive.google.com/open?id=0B4GlgKGAv8zJeDR0ZTNaZzA1RGs
 Ejercicio OpenWeatherMap
 https://drive.google.com/open?id=0B4GlgKGAv8zJWDR2TEhHLVYzOGM
 Ejercicio Catastro Provincias
 https://drive.google.com/open?id=0B4GlgKGAv8zJS1Y2TWliNVFIcUE
 Ejercicio Catastro Municipios
 https://drive.google.com/open?id=0B4GlgKGAv8zJQjIxNmFBb3pnTGc
GRACIAS

Weitere ähnliche Inhalte

Was ist angesagt?

Modelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capasModelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capas
Alex Uhu Colli
 

Was ist angesagt? (20)

Arquitectura Mvc
Arquitectura MvcArquitectura Mvc
Arquitectura Mvc
 
Taller MVC
Taller MVCTaller MVC
Taller MVC
 
Mvc
MvcMvc
Mvc
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Poo introduccion al patron mvc - renee morales calhua
Poo  introduccion al patron mvc - renee morales calhuaPoo  introduccion al patron mvc - renee morales calhua
Poo introduccion al patron mvc - renee morales calhua
 
Patrón MVC
Patrón MVCPatrón MVC
Patrón MVC
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
Model View Controller (MVC)
Model View Controller (MVC)Model View Controller (MVC)
Model View Controller (MVC)
 
Arquitectura MVC
Arquitectura MVCArquitectura MVC
Arquitectura MVC
 
Modelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capasModelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capas
 
MVC
MVCMVC
MVC
 
patron de diseño MVVMo.pptx
patron de diseño MVVMo.pptxpatron de diseño MVVMo.pptx
patron de diseño MVVMo.pptx
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Web 2
Web 2Web 2
Web 2
 
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
 
Presentacion wpf
Presentacion wpfPresentacion wpf
Presentacion wpf
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1
 
Analisis del patron mvc
Analisis del patron mvcAnalisis del patron mvc
Analisis del patron mvc
 
Asp
AspAsp
Asp
 
Jquery Hmvc
Jquery HmvcJquery Hmvc
Jquery Hmvc
 

Ähnlich wie Servicios web

Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
Josue Hernandez
 
Servicios web
Servicios webServicios web
Servicios web
itoomac02
 
Servicios web
Servicios webServicios web
Servicios web
itoomac02
 

Ähnlich wie Servicios web (20)

Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
 
Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
 
Servicios web
Servicios webServicios web
Servicios web
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js Introduccion
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Servicios web
Servicios webServicios web
Servicios web
 
Ajax Huancayo
Ajax HuancayoAjax Huancayo
Ajax Huancayo
 
Web service
Web serviceWeb service
Web service
 
Web service
Web serviceWeb service
Web service
 
Pdfwebservices
PdfwebservicesPdfwebservices
Pdfwebservices
 
Real time
Real timeReal time
Real time
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 

Kürzlich hochgeladen

RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 

Kürzlich hochgeladen (20)

ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 

Servicios web

  • 1. SERVICIOS WEB DESARROLLO DE APLICACIONES EN ENTORNO SERVIDOR
  • 2. ¿Qué es un servicio web?  Es un servidor web que ofrece información cuyo destino no es una persona con un navegador si no otra aplicación que “revenderá” dicha información al usuario final.  Las páginas de un servicio web pueden coexistir con la páginas web normales accedidas por personas. El protocolo es también HTTP y el servidor web es el mismo. Solo cambia el formato de las páginas. Las páginas de un servicio web NO utilizan HTML sino XML o SOAP.  Las páginas de un servicio web son más simples ya que la aplicación cliente solo toma lo que necesita. No tiene sentido insertar publicidad o imágenes.
  • 3. Ejemplo: Agencia Virtual de Viajes USUARIO FINAL AGENCIA DE VIAJES VIRTUAL IBERIA LUFTHANSA AIR FRANCE
  • 4. LENGUAJES UTILIZADOS  Todos están basados en XML  Métodos  GET  POST  Petición  SOAP (Es más antiguo, rígido y complejo) Simple Object Access Protocol  REST o RESTful (Es más moderno, flexible y simple) Representational State Transfer  Respuesta  SOAP  XML – Extensible Markup Language  JSON - JavaScript Object Notation
  • 6. Ejemplo de petición REST (RESTful)
  • 7. Uso de un Servicio Web en PHP
  • 8. Respuesta del Servicio Web object(stdClass)#1 (16) { ["id"]=> string(15) "820587571095211" ["t"]=> string(4) "BBVA" ["e"]=> string(3) "BME" ["l"]=> string(4) "6.24" ["l_fix"]=> string(4) "6.24" ["l_cur"]=> string(11) "€6.24" ["s"]=> string(1) "0" ["ltt"]=> string(13) "11:58AM GMT+1" ["lt"]=> string(21) "Feb 17, 11:58AM GMT+1" ["lt_dts"]=> string(20) "2017-02- 17T11:58:29Z" ["c"]=> string(5) "-0.07" ["c_fix"]=> string(5) "-0.07" ["cp"]=> string(5) "-1.09" ["cp_fix"]=> string(5) "-1.09" ["ccol"]=> string(3) "chr" ["pcls_fix"]=> string(5) "6.314" } Objeto PHP
  • 10. Ejercicio: Google Finance  Servicio Web  https://www.google.com/finance  Cotización de un valor en tiempo real  API  http://finance.google.com/finance/info?client=ig&q=BME%3AREP  Respuesta JSON (Es necesario retirar algunos caracteres)  Objetivo del ejercicio  Test del API con la aplicación SoapUI  Creación de un fichero PHP que visualice los datos más importante
  • 11. Implementación de un Servicio Web // create SQL based on HTTP method switch ($method) { case 'GET': $sql = "select * from `$table`".($key?" WHERE id=$key":''); break; case 'PUT': $sql = "update `$table` set $set where id=$key"; break; case 'POST': $sql = "insert into `$table` set $set"; break; case 'DELETE': $sql = "delete `$table` where id=$key"; break; } // excecute SQL statement $result = mysqli_query($link,$sql); // die if SQL statement failed if (!$result) { http_response_code(404); die(mysqli_error()); } // excecute SQL statement $result = mysqli_query($link,$sql); // die if SQL statement failed if (!$result) { http_response_code(404); die(mysqli_error()); } // print results, insert id or affected row count if ($method == 'GET') { if (!$key) echo '['; for ($i=0;$i<mysqli_num_rows($result);$i++) { echo ($i>0?',':'').json_encode(mysqli_fetch_object($result)); } if (!$key) echo ']'; } elseif ($method == 'POST') { echo mysqli_insert_id($link); } else { echo mysqli_affected_rows($link); } // close mysql connection mysqli_close($link); <?php // get the HTTP method, path and body of the request $method = $_SERVER['REQUEST_METHOD']; $request = explode('/', trim($_SERVER['PATH_INFO'],'/')); $input = json_decode(file_get_contents('php://input'),true); // connect to the mysql database $link = mysqli_connect('localhost', 'user', 'pass', 'dbname'); mysqli_set_charset($link,'utf8'); // retrieve the table and key from the path $table = preg_replace('/[^a-z0-9_]+/i','',array_shift($request)); $key = array_shift($request)+0; // escape the columns and values from the input object $columns = preg_replace('/[^a-z0-9_]+/i','',array_keys($input)); $values = array_map(function ($value) use ($link) { if ($value===null) return null; return mysqli_real_escape_string($link,(string)$value); },array_values($input)); // build the SET part of the SQL command $set = ''; for ($i=0;$i<count($columns);$i++) { $set.=($i>0?',':'').'`'.$columns[$i].'`='; $set.=($values[$i]===null?'NULL':'"'.$values[$i].'"'); }
  • 12. Ejercicio: Diseño de un servicio Web  Cliente  Aplicación SoapUI  Servicio Web  Aplicación listar empleados de la tabla Scott  Parámetros de entrada  Petición GET  Código empleado o nombre de empleado  Tipo de respuesta JSON o XML (parámetro mode)
  • 13. Caminos para el desarrollo  Desarrollo descendente (Top-Down) o Primero el contrato:  Se parte del archivo WSDL (contrato), que define el funcionamiento del servicio web (interfaz), sin entrar en detalles de implementación. Por esto, se denomina desarrollo con el contrato (archivo WSDL) por delante.  Los programadores, tanto del servicio como de los consumidores del mismo, pueden desarrollar en paralelo, asumiendo un comportamiento definido.  Desarrollo ascendente (Bottom-Up) o Primero el código:  Se parte de la implementación de las funcionalidades que el servicio exportará, para llegar en último término al archivo WSDL (contrato).  Los programadores de los consumidores del servicio deben esperar a que éste esté completamente codificado y se haya generado el WSDL, para poder empezar a producir invocaciones a sus métodos.
  • 14. Ejercicio: OpenWeatherMap  Servicio Web  http://www.OpenWeatherMap.org  Tiempo actual de un lugar  API  http://api.openweathermap.org/data/2.5/weather?q=Madrid&appid=5d3a300c7371f098 f448b4980871a592  Respuesta JSON  Objetivo del ejercicio  Test del API con la aplicación SoapUI  Creación de un fichero PHP que visualice los datos más importante
  • 15. Ejercicio: INE  Servicio Web  http://www.ine.es/dyngs/DataLab/manual.html?cid=45  Información del Instituto Nacional de Estadística  API  http://servicios.ine.es/wstempus/js/ES/DATOS_SERIE/{input}[?parámetros]  Respuesta JSON  Objetivo del ejercicio  Test del API con la aplicación SoapUI  Visualizar el número de ocupados (EPA87) y el número de parados (EPA86) del año 2016
  • 16. WSDL  Utilizado en los servicios SOAP  Lenguaje basado en XML para describir servicios web  Especifica la localización del servicio y las funcionalidades (métodos) que exporta.  Ejemplo: http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx? wsdl
  • 17. WSLD – Elementos principales Sección Uso <types> Contenedor de definiciones de tipos de datos usados por los mensajes de solicitud y de respuesta del servicio web <message> Mensajes enviados a y recibidos por el servicio web Definición tipada de los datos que se transmiten <portType> Lista de funciones que el servicio web exporta Conjunto de operaciones soportadas por uno o más puntos de término <binding> Protocolo y especificación de formato de datos de un tipo de puerto particular <service> Servicio(s) expuesto(s)
  • 18. Respuesta XML object(SimpleXMLElement)#1 (2) { ["control"]=> object(SimpleXMLElement)#3 (1) { ["cumun"]=> string(3) "179" } ["municipiero"]=> object(SimpleXMLElement)#2 (1) { ["muni"]=> array(179) { [0]=> object(SimpleXMLElement)#4 (3) { ["nm"]=> string(7) "AJALVIR" ["locat"]=> object(SimpleXMLElement)#183 (2) { ["cd"]=> string(2) "28" ["cmc"]=> string(1) "2" } ["loine"]=> object(SimpleXMLElement)#184 (2) { ["cp"]=> string(2) "28" ["cm"]=> string(1) "2" } } [1]=> object(SimpleXMLElement)#5 (3) { ["nm"]=> string(17) "ALAMEDA DEL VALLE" ["locat"]=> object(SimpleXMLElement)#184 (2) { ["cd"]=> string(2) "28" ["cmc"]=> string(1) "3" } ["loine"]=> object(SimpleXMLElement)#183 (2) { ["cp"]=> string(2) "28" ["cm"]=> string(1) "3" } } [2]=> object(SimpleXMLElement)#6 (3) { ["nm"]=> string(17) "ALCALA DE HENARES" ["locat"]=> object(SimpleXMLElement)#183 (2) { ["cd"]=> string(2) "28" ["cmc"]=> string(1) "5" } ["loine"]=> Objeto PHP
  • 19. VISUALIZACION DE LA RESPUESTA
  • 20. Ejercicio: Catastro Español (SOAP)  Servicio Web  http://www.catastro.meh.es/ayuda/lang/castellano/servicios_web.htm  Información catastral de España  API  http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?wsdl  SOAP  Objetivo del ejercicio  Test del API con la aplicación SoapUI  Probar las distintas opciones de petición de información  Crear un fichero PHP que realice una petición, introduzca la respuesta en un objeto XML y realice un “var_dump” en pantalla de dicha variable
  • 21. Ejercicio: Catastro Español (REST)  Servicio Web  http://www.catastro.meh.es/ayuda/lang/castellano/servicios_web.htm  Información catastral de España  API  http://ovc.catastro.meh.es/ovcservweb/ovcswlocalizacionrc/ovccallejero.asmx/ConsultaVi a?Provincia=MADRID&Municipio=MADRID&TipoVia=CL&NombreVia=padre claret  Content-Type: text/xml  Respuesta XML  Objetivo del ejercicio  Test del API con la aplicación SoapUI  Creación de un fichero PHP que visualice los datos más importante
  • 22. Resultado de los ejercicios  Ejercicio Google Finance  https://drive.google.com/open?id=0B4GlgKGAv8zJeDR0ZTNaZzA1RGs  Ejercicio OpenWeatherMap  https://drive.google.com/open?id=0B4GlgKGAv8zJWDR2TEhHLVYzOGM  Ejercicio Catastro Provincias  https://drive.google.com/open?id=0B4GlgKGAv8zJS1Y2TWliNVFIcUE  Ejercicio Catastro Municipios  https://drive.google.com/open?id=0B4GlgKGAv8zJQjIxNmFBb3pnTGc