Í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.