0% encontró este documento útil (0 votos)
2K vistas

Crear Un Webservice Básico Con PHP y Java

Este documento explica cómo crear un servicio web básico con PHP y SOAP usando el framework NuSOAP. Primero se describe la instalación de NuSOAP y la creación de un servidor SOAP simple que devuelve una lista de libros. Luego se explica cómo crear un cliente para acceder al servicio y mostrar los resultados. Finalmente, se indica cómo generar un archivo WSDL para documentar el servicio web.

Cargado por

Raudel Arteaga
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2K vistas

Crear Un Webservice Básico Con PHP y Java

Este documento explica cómo crear un servicio web básico con PHP y SOAP usando el framework NuSOAP. Primero se describe la instalación de NuSOAP y la creación de un servidor SOAP simple que devuelve una lista de libros. Luego se explica cómo crear un cliente para acceder al servicio y mostrar los resultados. Finalmente, se indica cómo generar un archivo WSDL para documentar el servicio web.

Cargado por

Raudel Arteaga
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 25

Crear un webservice bsico con PHP y SOAP

SOAP es un protocolo de intercambio para servicios web basado en XML, sobre el que puedes leer en esta entrada de la wikipedia. Para no liarnos con prembulos, vamos con la chicha cmo creamos un servicio web en PHP?. Para facilitarnos la vida empezaremos por descargar NuSOAP, un toolkit para el desarrollo de servicios web con SOAP en PHP, que nos proveer de diversas clases para trabajar con este protocolo. Basta con descargarlo, descomprimirlo, meterlo dentro de nuestro proyecto y, cuando queramos usarlo, incluir nusoap.php como librera. Ok, con NuSOAP instalado toca crear un servidor SOAP en nuestra aplicacin. Para el ejemplo crearemos un servidor, lo llamaremos producto.php, que si recibe una peticin donde se le pida una lista de libros devuelva tres ttulos (es un ejemplo bsico, piensa que en la realiad podras acceder a una base de datos y dar muchas ms funcionalidades). 1 2 <?php 3 require_once "nusoap.php"; 4 function getProd($categoria) { 5 if ($categoria == "libros") { 6 return join(",", array( 7 "El seor de los anillos", 8 "Los lmites de la Fundacin", 9 "The Rails Way")); } 10 else { 11 return "No hay productos de esta categoria"; 12 } 13 } 14 15 $server = new soap_server(); $server->register("getProd"); 16 $server->service($HTTP_RAW_POST_DATA); 17 ?> 18 19 Ok, ahora necesitas un cliente, que llamaremos cliente.php. En el constructor, el cliente recibir el url del servidor y para acceder al mtodo que nos devuelve los libros recurriremos al mtodo call(), al cual le pasaremos el nombre del mtodo del servidor al que queremos acceder y los parmetros en forma de array. Adems, tambin controlaremos que no haya errores en la comunicacin. <?php 1 require_once "nusoap.php"; 2 $cliente = new nusoap_client("http://localhost/producto.php"); 3 4 $error = $cliente->getError(); 5 if ($error) { echo "<h2>Constructor error</h2><pre>" . $error . "</pre>"; 6 } 7 8 $result = $cliente->call("getProd", array("categoria" => "libros")); 9 10 if ($cliente->fault) { 11 echo "<h2>Fault</h2><pre>";

print_r($result); 12 echo "</pre>"; 13 } 14 else { 15 $error = $cliente->getError(); if ($error) { 16 echo "<h2>Error</h2><pre>" . $error . "</pre>"; 17 } 18 else { 19 echo "<h2>Libros</h2><pre>"; 20 echo $result; echo "</pre>"; 21 } 22 } 23 ?> 24 25 26 27 28 Con esto ya tienes una idea my bsica del funcionamiento de un webservice SOAP construdo con PHP. Pero claro, nos falta un archivo WSDL para tener un webservice decente. Aunque dicho archivo puede ser escrito a mano, NuSOAP puede generarlo por tipasndole ciertos parmetros, por lo que lo ideal sera generarlo en el servidor. As que modifica tu producto.php para que quede tal que as: 1 2 <?php require_once "nusoap.php"; 3 4 function getProd($categoria) { 5 if ($categoria == "libros") { 6 return join(",", array( 7 "El seor de los anillos", "Los lmites de la Fundacin", 8 "The Rails Way")); 9 } 10 else { 11 return "No hay productos de esta categoria"; 12 } } 13 14 $server = new soap_server(); 15 $server->configureWSDL("producto", "urn:producto"); 16 17 $server->register("getProd", 18 array("categoria" => "xsd:string"), 19 array("return" => "xsd:string"), "urn:producto", 20 "urn:producto#getProd", 21 "rpc", 22 "encoded", 23 "Nos da una lista de productos de cada categora"); 24 25 $server->service($HTTP_RAW_POST_DATA); ?> 26 27

28 29 Como ves, el cambio en es cuando llamamos a register, ya que en vez de pasarle, como antes, el mtodo en cuestin, le aadimos tambin varios argumentos para generar el WSDL:
El primer array nos permite definir el argumento de entrada y su tipo de datos El segundo define la funcin de retorno y su tipo de datos urn:producto es la definicin del namespace urn:producto#getProd es donde definimos la accin SOAP Luego viene el tipo de llamada,que puede ser rpc, como en el ejemplo, o document Tras esto definimos el valor del atribute use, que puede ser encoded o literal Finalmente viene una descripcin de qu hace el mtodo al que llamamos Ahora basta con que en el navegador accedas a producto.php?wsdl y vers el WSDL generado. Ya puedes copiarlo y aadirlo a tu directorio web (crea un archivo y llmalo, por ejemplo, libros.wsdl). Para que el cliente lo utilice debes modificar el cdigo, y en el constructor, en vez del url le pasas el nombre del archivo, de forma que quede como en el ejemplo: $client = new nusoap_client("libros.wsdl", true); 1 Ahora s, ya tienes montado un pequeo servicio web. El ejemplo es simpln, pero piensa en todas las funcionalidades que podras incorporarle.

Cmo crear servicios web en JAVA IDE NetBeans


17:13 Fabin Bermeo Prez[MSP]

Hola a todos, bienvenidos a otro curso de desarrollo web, esta vez vamos a aprender cmo crear servicios web en java con el IDE NetbBeans. Antes de implementarlo, quiero recordarles que usamos servicios web en sistemas distribuidos donde necesitamos integrar diferentes plataformas como .NET, JAVA etc.

Abrimos nuestro NetBeans, en mi caso uso una versin 6.9.1 full que me funciona muy bien sobre windows 7 Ultimate x64

Nos dirigimos a archivo y le damos clic en nuevo proyecto

Buscamos el proyecto llamado java Web y dentro de l clic en aplicacin web

A continuacin le damos un nombre a nuestro proyecto, y los dems valores los dejamos por defecto

En la siguiente pantalla debemos escoger el servidor, en nuestro caso usaremos GlassFish Server 3 y la versin de java EE la dejamos como JAVA EE 6 Web

la ventana a continuacin la dejamos como est. No seleccionamos ningn valor de los checkbox

Luego de configurar, veremos un entorno como el siguiente, que es cdigo puro de HTML, y el conocidsimo Hello World!

Damos clic en ejecutar, para levantar los servicios seamos un poco pacientes, lleva de 2 a 3 minutos al finalizar veremos en nuestro explorador el Hello World!

De seguido necesitamos crear un nuevo paquete en donde se alojar el servicio web que vamos a construir damos clic derecho en fuente de paquetes, luego clic en nuevo y seleccionamos paquete de java

Obviamente le tenemos que dar un nombre, siempre usen pack_ + el nombre que le deseen asignar para llevar una jerarqua en cuanto nombres en el desarrollo de aplicaciones

ahora ubicamos a nuestro paquete, y le damos clic derecho seleccionamos nuevo y escogemos servicio web

le asignamos ahora un nombre a nuestro servicio web, que servir para identificarlo dentro de netbeans

Concluido el proceso, seleccionamos modo diseador, clic en agregar operacin, le asignamos un nombre que en nuestro caso lo denomin multiplicar_dos_nmeros con clic en agregar, inserto 3 parmetros dos de tipo int y uno de tipo string que me servir para mostrar el resultado cambio de nombres a cada una de las variables, segn nuestra necesidad

Volvemos a modo cdigo y agregamos las sentencias que busquemos sean ejecutadas por el servicio web en mi caso estoy declarando una nueva variable para multiplicar do nmeros que ingrese el usuario y devuelvo un texto concatenado con el resultado

para probar nuestro servicio web, buscamos la carpeta servicios web en el rbol de contenidos de la izquierda ingresamos en l y ubicamos a nuestro servicio web que creamos le damos clic derecho y probar servicio web

En el navegador veremos algo como esto, en donde debemos ingresar las variables que definimos en el servicio web solo necesitamos ingresar dos valores porque la tercera variable la usamos como retorno de la operacin as que le damos los valores del nmero 1 y del nmero 2 para multiplicarlos y clic en el botn que indica la operacin a realizar

lo que devolver ser el valor de las variables que ingresamos y su multiplicacin o resultado que se proces dentro del servicio web

de esta manera se manejan los servicios web, en prximas publicaciones les ensear como invocar este mismo servicio web desde .NET

JAVA: Crear un servicio web bsico con NetBeans 7.x


Una forma muy sencilla de desarrollar un servicio web en Java es haciendo uso de la plataforma de desarrollo NetBeans 7.x que nos permite adems desplegarlos en un servidor web local para pruebas como es GlassFish.

Para descargarnos NetBeans iremos a https://netbeans.org/downloads/. De todas las opciones que nos indica, os recomiendo descargar el paquete Java EE o All para asegurarnos de tener instalado GlassFish. En mi caso he escogido el paquete All para curarme en salud ;-).

De la instalacin voy a comentar poco, ya que simplemente hay que seguir el asistente con la tcnica de siguiente siguiente siguiente, estando bien seguros que instalamos GlassFish.

Desarrollo del servicio web


En NetBeans 7.x, para crear un servicio web deberemos crear un proyecto de aplicacin web.

En el asistente se nos preguntar por el servidor que usaremos, y es aqu donde seleccionaremos el GlassFish que hemos instalado.

Una vez creado el proyecto, aadiremos un nuevo WebService desde el men contextual New > WebService.

Se nos abrir un asistente en el que rellenaremos el nombre de la clase y su paquete.

Y con esto ya tenemos el servicio creado. @WebService(serviceName = "WSDemo") public class WSDemo {

/** * This is a sample web service operation */ @WebMethod(operationName = "hello") public String hello(@WebParam(name = "name") String txt) { return "Hello " + txt + " !"; } }

Analizando su cdigo, vemos que el servicio publica una funcin llamada hello. Sabemos que la clase es un servicio por @WebService y que es una funcin publicada en el WS por@WebMethod. Si queremos aadir una nueva funcin, simplemente tendremos que copiar la anterior y cambiar lo que queramos ;-)

Para publicar el servicio simplemente seleccionaremos deploy en el men contextual sobre el proyecto.

Es posible que nos pida permiso para arrancar GlassFish.

En el output del IDE nos mostrar que se ha generado correctamente y que GlassFish est iniciado.

En la pestaa de GlassFish podremos ver la ruta para acceder al servicio web.

Probando el servicio web


Accedemos a la URL que nos indica para ver el servicio. Para consultar su WSDL solo tenemos que aadir ?WSDL al final de la URL. Esto nos valdr en el caso de querer probarlo con herramientas como SoapUI(http://www.soapui.org/), al que deberemos indicarle el WSDL para que genere la invocacin.

Este nos generar la invocacin, y simplemente pulsado el botn de run, obtendremos el resultado en el lateral derecho de la request.

Simple, verdad?

Crear un simple servicio web SOAP en Java con NetBeans es re-fcil


21.12.08. Por ooscarr (ooscarr)

A travs de un video tutorial (mencionado al final de este documento), aprend a crear un simple servicio web con NetBeans. Segn le, Sun removi el soporte para el WSDK (aunque igual se sigue distribuyendo) para reemplazarlo por GlassFish. As que ni modo. Pero estas instrucciones tambin funcionan con Tomcat.

Crear nuevo proyecto


Lo primero es crear un nuevo proyecto, as que... 1. Creamos un Nuevo proyecto, en mi caso de tipo Aplicacin Web

2. Elijo un nombre para la aplicacin web. Yo le llam Holaste.

3. En los ajustes del servidor, elijo GlassFish o Tomcat, como siempre.

4. Y Terminar

Cdigo?
Como toda apliacin web, me aparece el tpico index.jsppredeterminado en el que puedo aprovechar de describir el Servicio Web (puedo poner cualquier cosa, en realidad, porque esto no es parte del servicio web).
index.jsp
<%-Document : index Created on : 21-dic-2008, 12:06:37 Author : ooscarr --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-cl"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Servicio web</title> </head> <body> <h1>Este es el Servicio web</h1> <p>Este servicio lo que hace es decir "Hola, [nombre]" a cambio de un parmetro [nombre] de tipo <code>String</code>.</p> </body> </html>

Creacin del Servicio Web


Mmm... Bueno, en NetBeans es muy sencillo crear un Servicio Web, slo basta seleccionar el nombre del proyecto (Holaste en mi caso) y poner Archivo Nuevo. Ahi tambin hay una opcin llamada Web Service.

Y le damos un nombre, por ejemplo, ServicioWeb.

Aprovech de agregarlo a un paquete llamado hola.

Aadir operaciones
Para aadir operaciones hay que slo posicionarse sobre el Servicio Web y poner Add Operation...

De otra forma, Operation....

en

el

modo Design existe

el

botn Add

Ah le pongo un nombre, puedo aadir parmetros y elegir si lo quiero de tipo String, boolean, int, etc.

ServicioWeb.java

Con eso se generar automticamente el cdigo esqueleto que puedo modificar para que me retorne "Hola, " + nombre;. As:
package hola; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; /** * * @author ooscarr */ @WebService() public class ServicioWeb { /** * Web service operation */ @WebMethod(operationName = "diHola") public String diHola(@WebParam(name = "nombre") String nombre) {

//TODO write your implementation code here: return "Hola, " + nombre; } }

Probmoslo
Ya. Probmoslo. Para eso primero hay que armar el proyecto con el men contextual del proyecto, opcin Deploy.
GENERACIN CORRECTA (tiempo total: 7 segundos)

Y probar el servicio web, seleccionando el Servicio web, opcin Test Web Service.
INFO: Dynamically creating request wrapper Class hola.jaxws.DiHola INFO: Dynamically creating response wrapper bean Class hola.jaxws.DiHolaResponse INFO: parsing WSDL... INFO: generating code... INFO: compiling code... INFO: Invoking wsimport with http://localhost:8080/Holaste/ServicioWebService?WSDL INFO: wsimport successful INFO: parsing WSDL... INFO: generating code... INFO: compiling code... INFO: Invoking wsimport with http://localhost:8080/Holaste/ServicioWebService?WSDL INFO: wsimport successful

Si todo est bien instalado, se debera abrir una ventana del navegador ms o menos as.

Aqu, por ejemplo, si pongo Oscar en el formulario, se puede ver el cdigo que entrega el servicio Web al cliente.

WSDL
Tambin es bueno hacer notar que NetBeans genera automticamente el archivo WSDL (y su XML Schema tambin) para ser usado en las implementaciones de los Clientes.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.5-hudson-$BUILD_NUMBER-. --> <definitions targetNamespace="http://hola/" name="ServicioWebService" xmlns:tns="http://hola/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <xsd:schema> <xsd:import namespace="http://hola/" schemaLocation="ServicioWebService_schema1.xsd"/> </xsd:schema> </types> <message name="diHola"> <part name="parameters" element="tns:diHola"/> </message> <message name="diHolaResponse"> <part name="parameters" element="tns:diHolaResponse"/> </message> <portType name="ServicioWeb"> <operation name="diHola"> <input message="tns:diHola"/> <output message="tns:diHolaResponse"/>

</operation> </portType> <binding name="ServicioWebPortBinding" type="tns:ServicioWeb"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="diHola"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="ServicioWebService"> <port name="ServicioWebPort" binding="tns:ServicioWebPortBinding"> <soap:address location="REPLACE_WITH_ACTUAL_URL"/> </port> </service> </definitions>

Fuente
Todo lo que dije lo saqu de un video hecho por un desarrollador de Sun. Lo puedes ver (en ingls) desde el siguiente link, por si te qued alguna duda.

También podría gustarte