Índice
Tutorial onde se descreve a implementação de Web Services em PHP utilizando a classe NuSoap.
Comecemos com um exemplo muito simples o "hello world".
Exemplo 2.1. O servidor: serv-hello.php
<?php // Pull in the NuSOAP code require_once('./lib/nusoap.php'); // Create the server instance $server = new soap_server; // Register the method to expose $server->register('hello'); // Define the method as a PHP function function hello($name) { return 'Hello, ' . $name; } // Use the request to (try to) invoke the service $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); ?>
No exemplo seguinte, mostra-se cliente para este serviço. Existem algumas coisas importantes a serem observadas. Primeiro, quando a instância do soapclient é criada, o parâmetro especificado é a URL para o serviço. No nosso caso, serv-hello.php é acedido a partir de um URL no servidor local http://localhost:8888/nusoap-0.9.5/
(iremos alterar isso nos próximos exemplos publicando os serviços noutro servidor).
Os serviços que consomem estarão, naturalmente, localizados em URLs diferentes. Ao chamar o serviço, o primeiro parâmetro é o nome do serviço. Este deve corresponder ao nome de um método disponível no servidor. Neste exemplo, deve coincidir com o método registado dentro do serv-hello.php. Finalmente, o segundo parâmetro na chamada é um array de parâmetros que serão passados para o método do serviço SOAP. Como o método do serv-hello.php, hello requer um único parâmetro, este array tem apenas um elemento.
Exemplo 2.2. O cliente: client-hello.php
<?php // Pull in the NuSOAP code require_once('./lib/nusoap.php'); // Create the client instance // Server Location // http://localhost:8888/nusoap-0.9.5/Hello/serv-hello.php $client = new nusoap_client('http://localhost:8888/nusoap-0.9.5/Hello/serv-hello.php', false); // Call the SOAP method $result = $client->call('hello', array('name' => 'José Carlos Ramalho')); // Display the result print_r($result); ?>
Nota: em PHP o array global $_REQUEST corresponde a uma união dos arrays $_GET e $_POST; se o usarmos podemos configurar o nosso cliente para receber parâmetros via formulário (get ou post) ou através do URL (get).
O nosso cliente poderia ficar assim.
Exemplo 2.3. O cliente: client-hello2.php
<?php // Pull in the NuSOAP code require_once('../lib/nusoap.php'); // Create the client instance // Server Locations // $location = 'http://localhost:8888/nusoap-0.9.5/Hello/serv-hello.php'; $location ='http://epl.di.uminho.pt/~jcr/jcrbin/php-projects/nusoap-0.9.5/Hello/serv-hello.php'; $client = new nusoap_client( $location, false); $name = $_REQUEST['name']; // Call the SOAP method $result = $client->call('hello', array('name' => $name)); // Display the result print_r($result); ?>
E poderia ser invocado da seguinte forma:
Crie uma página HTML adicional que é um formulário para receber o parâmetro do método e coloque o cliente a responder ao formulário;
Usando o exemplo apresentado crie um serviço que realiza vários cálculos numéricos (tem registados vários métodos):
Somar 2 números;
Subtrair 2 números;
Multiplicar 2 números;
Dividir 2 números.