3. Programación Web - Autor: Armando Nuñez Ramos 3
Contenido
JAVA ..............................................................................................................................................................................
PHP ................................................................................................................................................................................
PERL..............................................................................................................................................................................
GOOGLE........................................................................................................................................................................
Programación Web
4. Programación Web - Autor: Armando Nuñez Ramos 4
4
Servicios web en Java
Existen gran cantidad de implementaciones que ayudan al desarrollo de
Servicios Web para cada uno de los lenguajes de programación.
Sun provee de una serie de tecnologías en su versión Java EE para el
desarrollo de Servicios Web.
Éstas tecnologías son estándares de desarrollo, así como API’s que
especifican el comportamiento de implementaciones.
En las últimas especificaciones Sun crea una nueva especificación que
facilita el desarrollo de Web Services a través de anotaciones.
Tecnologías para ServiciosWeb en Java EE:
Especificación de Implementación
http://jcp.org/en/jsr/detail?id=109
JAX-WS: Java API for XML Web Services
https://jax-ws.dev.java.net/
JAX-RPC: Java API for XML-based RPC
https://jax-rpc.dev.java.net/
JAXB: Java Architecture for XML Binding
https://jaxb.dev.java.net/
SAAJ: SOAP with Attachments API for Java
https://saaj.dev.java.net/
StAX:Streaming API for XML
http://java.sun.com/webservices/docs/1.6/tutorial/doc/SJSXP.html
Web Services Metadata for the Java Platform
http://jcp.org/en/jsr/detail?id=181
Programación Web
5. Programación Web - Autor: Armando Nuñez Ramos 5
5
Web Services en JavaEE6 y JDK6
A partir de la version 6 (update 4), la plataforma Java estandar (JDK), incluye
las APIs para trabajar con JAX-WS y JAXB, fundamentales para el consumo de
web services.
Figura 1.1 Consumo y definición de un web service
Servicios web con PHP
La implementación de servicios web en PHP se realiza por medio de
tecnologías XML-RPC y SOAP. Estas tecnologías cuentan con la
implementación de servidores y clientes consumidores de servicios web.
SOAP
El Protocolo de Acceso a Objetos Simple, es un protocolo que se define por las
siguientes características:
Se basa en XML
Se compone por tres partes: definición del mensaje y forma de
procesarlo, sistema de reglas de codificación y representación de
respuestas de llamadas de procedimientos remotos.
XML-RPC
El protocolo de llamada de procedimientos remotos es básicamente una
petición del HTTP-POST que trabaja en internet y está escrita en XML. El
procedimiento es ejecutado en el servidor y el valor que devuelve se maneja
también en formato XML.
6. Programación Web - Autor: Armando Nuñez Ramos 6
6
Figura 2.1 Ejemplo de petición y respuesta
Clientes SOAP con PHP
A continuación se muestra un script elaborado en PHP que utiliza SOAP para
consumir un servicio web que regresa el mensaje "Hola Mundo":
<?php
// Manejo de la forma para ver si ya se envió
if (!(string)$_POST["boton"] == "") {
// Incluimos las clases de SOAP
require("nusoap.php");
// crea el cliente
$cliente = new soapclient("http://localhost/taller/server.php?wsdl", "wsdl");
$proxy = $cliente->getProxy();
// llamada al metodo (BuscaIsbn)
$resultado = $proxy->BuscaIsbn((string)$_POST["isbn"]);
// Revisa errores
if (!$cliente->getError()) {
// muestra resultados
print "El titulo del libro con ISBN ".(string)$_POST["isbn"]." es:
".$resultado;
}
// Error
else {
echo "<h1>Error: ".$cliente->getError()."</h1>";
}
}
?>
<!-- Forma de busqueda -->
<form name="datos" action="#" method="POST">
ISBN: <input type="text" name="isbn">
<input name="boton" type="submit" value="Buscar">
</form>
7. Programación Web - Autor: Armando Nuñez Ramos 7
7
Servidores SOAP con PHP
Para crear un servidor de servicios web con SOAP y PHP se utiliza NuSOAP. A
continuación se muestra un ejemplo de búsqueda de un libro por título:
<?php
// Incluimos las clases de SOAP
require("nusoap.php");
// Creamos el objeto del servidor
$servidor=new soap_server();
// Registramos la función que queremos exponer como servicio web
$servidor->register("buscaIsbn");
// Generación del WSDL
$servidor->debug_flag=false;
$servidor->configureWSDL("ISBN", "http:/localhost/taller");
$servidor->wsdl->schemaTargetNamespace = "http:/localhost/taller";
/*// Agregamos un tipo de dato complejo
$servidor->wsdl->addComplexType(
"datosLibro",
"complexType",
"struct",
"all",
"",
array(
"titulo" => array("name"=>"titulo", "type"=>"xsd:string"))
);*/
// Registramos el método
$servidor->register("BuscaIsbn", array("titulo" => "xsd:string"),
array("return"=>"xsd:string"),http://localhost/taller");
function BuscaIsbn($isbn)
{
if (isset($isbn))
{
switch($isbn) /*No usaremos base de datos*/
{
case 111: $titulo="Taller de PHP";
break;
case 222: $titulo="PHP y XML_RPC";
break;
case 333: $titulo="Creando sitios web con PHP";
break;
case 444: $titulo="PHP para principiantes";
break;
default: return new soap_fault("Client", "", "El libro no
existe.", "");
}
}
else
{
// No hay isbn
return new soap_fault("Client", "", "No envio ISBN.", "");
}
return $titulo;
}
// Enviar el resultado como una respuesta SOAP por HTTP
$servidor->service($HTTP_RAW_POST_DATA);
exit();
?>
8. Programación Web - Autor: Armando Nuñez Ramos 8
8
Servidor Framework XML-RPC
Para la construcción de servidores el framework cuenta con la clase
xmlrpc_server:
Figura 2.2 Clase xmlrpc_server
Cliente XML-RPC
Para crear un cliente XML-RPC que consuma servicios web de este tipo se utilizan las
siguientes clases:
xmlrpc_client.: clase básica para un cliente XML-RPC. Se utiliza como
se muestra a continuación:
<?php $cliente = new xmlrpc_client($ruta_servidor,$nombre_servidor,$puerto_servidor);
?>
xmlrpcmsg: provee una representación para una petición a un servidor
XML-RPC. Un cliente envía un xmlrpcmsg al servidor y recibe un
xmlrpcresp.
<?php $msg = new xmlrpcmsg($nombre_metodo,$arreglo_parametros); ?>
xmlrpcval: permite la creación y encapsulamiento de los valores para
XML-RPC.
<?php $valor=new xmlrpcval(); ?>
Ejemplo de cliente XML-RPC
<?php
include("xmlrpc.inc");
if ($HTTP_POST_VARS["txtIsbn"]!="")
{ $f=new xmlrpcmsg('libros.buscaIsbn',array(new xmlrpcval($HTTP_POST_VARS["txtIsbn"],
"int")));
print "<pre>".htmlentities($f->serialize())."</pre>n";
$c=new xmlrpc_client("/servidor.php", "localhost", 80);
$c->setDebug(0);
$r=$c->send($f);
if (!$r)
{ die("Falló SEND"); }
9. Programación Web - Autor: Armando Nuñez Ramos 9
9
$v=$r->value();
if (!$r->faultCode())
{ print "Título del libro ".$HTTP_POST_VARS["txtIsbn"]." es ".$v-
>scalarval()."<BR>"; }
else
{ print "Falla: ";
print "Número de error: " .$r->faultCode()." Descripción del error '".$r-
>faultString()."'<BR>";}
}
?>
Servicios web con Pearl
Implementar servicios Web
Para la implementación de servicios web en Pearl se utiliza SOAP :: Lite. A
continuación se muestra un ejemplo de creación y consumo de un servicio web:
Modulo Hola Mundo de Pearl
Hello.pm
# Hello.pm - Hola módulo sencillo
paquete Hello;
sub sayHello {
turno; # eliminar nombre de la clase
de retorno "Hello". cambio;
}
1;
Cliente
hw_client.pl
! # / Usr / bin / perl-w
# hw_client.pl - Hola cliente
utilización SOAP :: Lite;
mi $ nombre = cambio;
print " n nCalling el servidor SOAP para saludar n ";
print "El servidor SOAP dice: ";
impresión SOAP :: Lite
-> uri ('urn: Ejemplo 1')
-> proxy ('http://localhost/cgi-bin/helloworld.cgi')
-> sayHello ($ name)
-> como resultado. " N n";
Código detrás de
la interfaz del
servicio web
Consumo del
servicio
10. Programación Web - Autor: Armando Nuñez Ramos 10
Servicios web con Google
LISTA DE APIS DE GOOGLE
APIS DIRECCIÓN DESCRIPCIÓN
APIs de Datos http://code.google.com/intl/es/apis/gdata/
Protocolo estándar para leer e introducir
datos en la Web. Google Base, Blogger,
Google Calendar, Google Docs y Álbumes
web de Picasa cuentan con este tipo de
APIs.
API de datos
de Blogger
http://code.google.com/intl/es/apis/blogger
Permite a las aplicaciones cliente ver y
actualizar contenido de Blogger como feeds
de la API de datos de Google
APIs de
FeedBurner
http://code.google.com/intl/es/apis/feedburner/
Ofrece servicios web que permiten
interactuar con funciones de
Feeds Atom de
Gmail
http://gmail.google.com/support/bin/answer.py?answer=13465
Permite leer etiquetas o mensajes recibidos
en Gmail mediante cualquier agregador que
admita el formato de feeds Atom XML.
Autenticación
de cuentas de
Google
http://code.google.com/intl/es/apis/accounts/
Permite incorporar accesos programáticos
en aplicaciones móviles o de escritorio
APIs AJAX de
Google
http://code.google.com/intl/es/apis/ajax/
Permiten crear sitios web completos y
dinámicos utilizando únicamente JavaScript
11. Programación Web - Autor: Armando Nuñez Ramos 11
11
y HTML
Google Code
Search
http://www.google.com/codesearch
Ayuda a encontrar definiciones de
funciones y código de ejemplo de acceso
público
API de Google
Maps
http://code.google.com/intl/es/apis/maps/
Permite crear innovadoras aplicaciones
geográficas online e integrar mapas y
referencias geográficas en sitios web. Con
esta API, podrás presentar fácilmente tu
contenido con referencias geográficas en
cualquier navegador web.
Google
Sitemaps
https://www.google.com/webmasters/tools/docs/en/about.html
Da la posibilidad de descubrir rápidamente
las páginas existentes y las que han
cambiado recientemente
API de datos
de YouTube
http://code.google.com/intl/es/apis/youtube/
Ofrece libre acceso a partes clave del
repositorio de vídeos de YouTube y a la
comunidad de usuarios a través de feeds
RSS y de una API abiert