Enjoy Pra quem ve essa merda de blog,fala ae se ta bom =) E um conjunto de classes PHP que permite aos desenvolvedores criar e consumir servicos Web baseados em SOAP 1.1, 1.1 e WSDL HTTP 1.0/1.1. Pode ser feito download a partir da pagina: http://sourceforge.net/projects/nusoap/Instalacao:Depois de ter baixado uma copia do nusoap.php, basta coloca-lo em sua arvore de codigo para que voce possa inclui-lo em seu codigo PHP. Alguns usuarios colocaram nele um diretorio separado lib. Para o meu exemplo, eu coloquei-o no mesmo diretorio como o codigo de exemplo em si.Exemplos:Vamos comecar com o exemplo simples "Hello world". Isso vai demonstrar a base de clientes de codificacao NuSOAP e servidores.Vamos comecar com o codigo do servidor, ja que sem um servidor, nao ha necessidade de ter qualquer cliente. O servidor SOAP expoe um metodo unico chamado Hello, o que leva um parametro de sequencia unica de entrada e retorna um string. Felizmente, os comentarios dentro do codigo fornecer uma explicacao suficiente! Para os servicos mais simples, tudo o que vai mudar sao as funcoes a ser definido e registrado. Nomeie um arquivo como server.php. Seu conteudo segue abaixo. require_once('nusoap.php');// Cria uma instancia do servidor$server = new soap_server;// Registrando o metodo criado$server->register('hello');// Define o metodo function hello($name) { return 'Hello, ' . $name;}// Usar o request para invocar o servico$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';$server->service($HTTP_RAW_POST_DATA); O cliente para este servico segue abaixo. Existem algumas coisas importantes a serem observadas. Primeiro, quando a instancia do soapclient e criado, o parametro especificado e o URL para o servico. No meu caso, server.php e acessado a partir http://localhost/projeto/webservice. Os servicos que voce consome, e claro, estarao localizados em URLs diferentes. Em segundo lugar, ao chamar o servico, o primeiro parametro e o nome do servico. Este deve corresponder ao nome case-sensitive de um metodo disponivel no servidor. Neste exemplo, ele deve corresponder ao metodo registrados no server.php. Finalmente, o segundo parametro na chamada e um array de parametros que serao passados para o metodo de servico SOAP. Como o metodo de server.php Hello requer um unico parametro, esse array tem um elemento.require_once('nusoap.php');// Criar uma instancia do client$client = new soapclient('http://localhost/projeto/webservice/server.php');//Chama o metodo call do SOAP$result = $client->call('hello', array('name' => 'Scott'));// exibe o resultadoprint_r($result);// checando faultsif ($client->fault) { echo '<p><b>Fault: '; print_r($result); echo '</b></p>';} else { // Checando erros $err = $client->getError(); if ($err) { echo '<p><b>Error: ' . $err . '</b></p>'; } else { print_r($result); }}//Debugando echo '<h2>Request</h2>';echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';echo '<h2>Response</h2>';echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';echo '<h2>Debug</h2>';echo '<pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';Outro exemplo mais completo, que envolve o cadastro de dados de clientes no banco de dados. O arquivo server.php segue abaixo: $server = new soap_server();$server->debug_flag = true;$server->configureWSDL('MeuNameSpace', 'WSDL');$server->wsdl->schemaTargetNameSpace='urn:MeuNameSpace';$server->register('cadastrar', array('entrada'=>'tns:arrCadastro'), array('return'=>'xsd:string'), 'urn:MeuNameSpace', 'urn:MeuNameSpace#cadastrar', 'rpc', 'encoded', ''); $server->wsdl->addComplexType('arrCadastro', 'complexType', 'struct', 'all','',array( 'full_name'=>array('name'=>'full_name','type'=>'xsd:string') ,'email'=>array('name'=>'email','type'=>'xsd:string') ,'dat_nascimento'=>array('name'=>'dat_nascimento','type'=>'xsd:string') ,'cpf'=>array('name'=>'cpf','type'=>'xsd:string') ));function cadastrar($dados=array()){ $objCliente = new Cliente(); if($objCliente) $id = $objCliente->cadastroWebService($dados); return "$id";}$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';$server->service($HTTP_RAW_POST_DATA);E o client para testes: client.php $client = new nusoap_client('http://localhost/projeto/webservice/server.php?wsdl&debug=1', 'wsdl');$err = $client->getError();if ($err) { echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; echo '<h2>Debug</h2>'; echo '<pre>'