WebService em PHP utilizando NuSOAP

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Desenvolvimento Web /WebService em PHP utilizando NuSOAP

WebService em PHP utilizando NuSOAP

Vinícius Thiengo
(21171) (29)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloCraftsmanship Limpo: Disciplinas, Padrões e ética
CategoriaDesenvolvimento Web
Autor(es)Robert C. Martin
EditoraAlta Books
Edição
Ano2023
Páginas416
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Tudo bem?

Na vídeo aula acima nós vamos, passo a passo, destrinchar um biblioteca completa NuSOAP PHP para ser utilizada em WebService.

Toda a configuração necessária, exemplo prático e trabalho com o WSDL (Web Services Description Language) serão todos abordados.

Apesar de não ser hoje um modelo de comunicação com servidores em destaque no mercado (devido ao uso do XML ao invés do JSON), o trabalho com WebService que faz uso de WSDL ainda é algo comum de encontrar.

Principalmente em ambientes Web do Governo Federal.

Então, para você que é desenvolvedor PHP, é inteligente investir um tempo para aprender a trabalhar com alguma biblioteca NuSOAP.

E na vídeo aula acima nós vamos destrinchar uma das mais populares libraries já a alguns anos no PHP.

Então é isso.

Antes de finalizar.

Um excelente repositório PHP para encontrar as melhores bibliotecas é o Packagist.org.

Veja algumas somente de NuSOAP:

Por fim...

... não esqueça de se inscrever 📫 na lista de e-mails do Blog para receber todos os conteúdos de desenvolvimento exclusivos e em primeira mão... e também em suas versões PDF (disponíveis gratuitamente apenas aos inscritos da lista de e-mails).

Se inscreva também no canal do Blog no YouTube para acompanhar as últimas novidades disponíveis lá.

Surgindo dúvidas ou dicas, pode enviar abaixo na área de comentários que logo eu lhe retorno.

Observações importantes:

  • O link para a página de demonstração do projeto de exemplo da vídeo aula está logo abaixo na seção "Demo";
  • O link para download do projeto apresentado se encontra logo abaixo na seção "Download".

Abraço.

Fontes

NuSOAP - SOAP Toolkit for PHP

Documentação oficial $HTTP_RAW_POST_DATA PHP

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

jQuery Para Quem Não ConhecejQuery Para Quem Não ConheceDesenvolvimento Web
PHP Para Quem Não ConhecePHP Para Quem Não ConheceDesenvolvimento Web
PHP: FunçõesPHP: FunçõesDesenvolvimento Web
PHP: Classes e ObjetosPHP: Classes e ObjetosDesenvolvimento Web

Compartilhar

Comentários Facebook

Comentários Blog (29)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
26/04/2016
Me desculpe pela demora.
Consegui resolver o problema, o problema não estava no código do seu exemplo mas, foi preciso descomentar a linha extension=php_soap.dll do arquivo php.ini e o exemplo funcionou normalmente.
Responder
Vinícius Thiengo (1) (0)
26/04/2016
Show de bola Jemison. Abraço
Responder
22/04/2016
Cara agradeço muito a sua ajuda.
Tenho instalado aqui o php 5.6
Postei com o nome WebServiceJemison
Responder
Vinícius Thiengo (0) (0)
22/04/2016
Jemison, coloque aqui o link.
Responder
18/04/2016
Opa Thiengo blza? Cara sou novato em PHP e estou reproduzindo seu exemplo seguindo o vídeo, porém o cliente não retorna nenhum valor. Baixei seu arquivo e me deparei com o mesmo problema. Tem algo mais que eu deva fazer?
Responder
Vinícius Thiengo (0) (0)
18/04/2016
Fala Jemilson, blz aqui.
Se possível faça o seguinte, como não sei a versão de seu PHP e sabendo que essa lib (NuSOAP) está um pouco antiga, utilize a primeira library do resultado desse link: https://packagist.org/search/?q=soap
Essa é mais atual. Se mesmo assim nada volte ae. Abraço
Responder
19/04/2016
Não funcionou, o cliente continua sem dados na tela porém o .xml gerado contém os dados corretamente. Estou usando o PHP5.6 e o MyPhpAdmin 4.4, ubuntu 14
Responder
Vinícius Thiengo (1) (0)
20/04/2016
Jemison,
Coloque seus códigos cliente e servidor (somente os trechos referente ao WebService) no pasteBin (http://pastebin.com/ ) para que possa verificar. Abraço
Responder
04/01/2016
Fala ai Vinícios, Sabe dizer se o NuSOAP, voltou a ser atualizado?
Responder
Vinícius Thiengo (0) (0)
05/01/2016
Fala Davi, blz?
Acredito que não, pois no SourceForge a página está com ultima atualização em 2013 (segundo o Google). Porém pode buscar outras libraries no Packagist.org (https://packagist.org/search/?q=soap ), dê uma olhada no link. Abraço
Responder
05/01/2016
Uma pena né!  Gostei bastante do nuSOAP, mas infelizmente não vai dar para usa-lo mais!
Responder
Paulo Henrique (1) (0)
07/10/2015
Gostaria de saber a diferenca entre usar o soap e nosoap ??
Responder
Vinícius Thiengo (0) (0)
07/10/2015
Fala Paulo Henrique, blz?
Na verdade o NuSOAP é apenas um caminho / lib para facilitar o uso do SOAP no PHP, ambos são SOAP. Abraço
Responder
15/07/2015
Boa Tarde Thiengo, fiz o seu exemplo sobre WS e estou com uma dúvida. Quando tenho vários métodos no WS, preciso realizar o registro de todos ? eu fiz o registro de todos e sempre quando executo a chamada a parte de descrição dos métodos aparece junto com o resultado.
O que pode ser isso ?
Responder
Vinícius Thiengo (0) (0)
16/07/2015
Fala Diogo, blz?
Se vc não for permitir que os consumidores de seu WebService consumam alguns dos serviços, não precisa cadastra-los, caso contrário vc deve, pois senão os consumidores (outros developers) não saberão como utiliza-los. Quanto aos resultados apresentados, na verdade é como será a resposta do do serviço registrado no WebService, para os consumidores saberem como trabalha-la. Abraço
Responder
09/07/2015
cara tenho uma dúvida:
Estou conseguindo usar o nusoap tranquilo, mas me bateu uma preocupação.
No caso do exemplo que vc passou e até mesmo o atual codigo que estou usando, estou passando poucos parametros:

$servidor->register(
'exemplo',
array('nome'=>'xsd:string',
'idade'=>'xsd:int'),
array('retorno'=>'xsd:string'),
'urn:Servidor.exemplo',
'urn:Servidor.exmeplo',
'rpc',
'encoded',
'Apenas um exemplo utilizando o NuSOAP PHP.'
);

então a function que vc usa recebe os campos idade e nome:

function exemplo($nome, $idade){
return($nome.' -> '.$idade);
}

Mas me veio a preocupação, se por um acaso a wsdl contenha 50 parametros?  não será possivel passar os 50 assim pois vai dar erro!

function exemplo(n1, n2 ..... n50 ){
return($nome.' -> '.$idade);
}

Tem como eu passar o Array? se sim pode me dar uma força? já tentei algumas vezes e não consegui!
Responder
Vinícius Thiengo (0) (0)
09/07/2015
Fala Davi, blz?
Veja esse stackoverflow (http://stackoverflow.com/questions/26502512/passing-an-array-to-web-service-php-nusoap ), veja a pergunta e a resposta, pois o camarada solucionou esse problema.

Porém acredito que se vc pegar seu array e transforma-lo para JSON (com PHP vc consegue fazer isso apenas chamando json_encode()) e então enviar esse JSON como se fosse uma simples String e então no WebService apenas utilizasse a função json_decode() esse problema que vc está tendo seria solucionado de maneira mt mais fácil, até mais fácil que a resposta do stack. Vc pode ter uma dor de cabeça se a linguagem cliente que estiver utilizando (a que consome e envia dados para o WebService NuSOAP) não oferecer um meio simples de transformar um array em uma String. Abraço
Responder
30/06/2015
Boa tarde!  Cara usei seu código , porém não apresenta nenhum resultado.... Olha isso:
servidor.php
<?php

include 'lib/nusoap.php';


$servidor = new nusoap_server();
$servidor -> configureWSDL('urn.Servidor');


$servidor->register('exemplo',
                 array('nome'=>'xsd:string' ,
                       'idade'=>'xsd:string'),
                 array('retorno'=>'xsd:string'),
                 'urn:Servidor.exemplo',
                 'rpc',
                 'encoded',
                 'Processo Seletivo' );

function exemplo ($nome, $ideade){
    return($nome.'-->'.$idade);
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$servidor->service($HTTP_RAW_POST_DATA);

$handle = fopen('log.xml', 'w');
fwrite($handle, $HTTP_RAW_POST_DATA);
fclose($handle);
?>
E cliente.php:
<?php
       require('lib/nusoap.php');
       $client = new nusoap_client('http://webservice.zeus.com.br/soap/fiergs/processo_seletivo/servidor.php?wsdl' , 'wsdl');
      
       $dados = array(
               'nome' => 'Davi',
               'idade' => 39 );
       $result = $client->call('exemplo', $dados);
       echo utf8_encode($result);
       print ('Resuldato ==>'.  $result);
?>
Seria alguma coisa de configuração ou versão do PHP?
Responder
Vinícius Thiengo (0) (0)
30/06/2015
Fala Davi, blz?
No vídeo mostro uma configuração no php.ini que deve ser realizada, seguiu essa orientação? Está sendo apresentada alguma mensagem de erro depois da tentativa de rodar? Se sim, qual? Abraço
Responder
01/07/2015
Opa, muito obrigado pela resposta rápida, aparentemente era isso mesmo! mandou bem!  ótimo vídeo e me ajudou. Já tinha trabalhado com SOAP antes mas nunca com PHP.
Responder
08/05/2015
Olá Thiengo,

Seu Video esta muito bom, porém eu estou tentando colocar um array que vai vir por parte do cliente, estou com alguns testes aqui, porém eu não consigo pegar os valores do outro lado( server), vc teria alguma ajuda?
Responder
Vinícius Thiengo (0) (0)
09/05/2015
Fala Bruna, blz?
Veja se a parte "What about list of walks" desse post (http://www.wackylabs.net/2004/07/creating-a-web-service-and-wsdl-using-nusoap/ ) lhe ajuda. Nele há um exemplo de resposta em array(), terá de adaptar para recebimento em array. Uma opção é vc juntar todas as opções do array em um só string com um separador comum (__SEPARATOR__, por exemplo). Pode utilizar a função implode() para juntar. E então enviar um só dado que seria uma string, no servidor vc utilizaria um explode(__SEPARATOR__) na string obtida e então teria o array novamente. Abraço
Responder
Tiago Farias (0) (0)
12/12/2014
Olá Thiengo!

Se liga cara, eu criei um ws como o da vídeo aula, porém acabei precisando fazer modificações e etc... gostaria de saber como posso configurar o register para enviar um array de arrays como parametro por exemplo:

<pessoas_fisicas>

    <pessoa_fisica>
        <nome></nome>
        <cpf></cpf>
    </pessoa_fisica>

    <pessoa_fisica>
        <nome></nome>
        <cpf></cpf>
    </pessoa_fisica>

</pessoas_fisicas>

VALEUUU!!!  E parabéns pelo seu trabalho, sucesso!
Responder
Vinícius Thiengo (0) (0)
13/12/2014
Fala Tiago, blz?
Não cheguei a utilizar o SOAP com array ainda, mas essa dúvida já é antiga, nos comentários do YouTube havia respondido um camarada com a mesma dúvida, mas o link que informei a ele não está ativo mais. Encontrei os links abaixo no stackoverflow, acho que podem lhe ajudar, qualquer coisa volte ae se não rodar. Abraço

http://stackoverflow.com/questions/14380788/return-array-of-arrays-nusoap-php-web-service

http://stackoverflow.com/questions/18779953/how-to-deal-with-array-complextype-in-nusoap
Responder
13/10/2014
Parabens Thiengo pelo tutorial, Excelente!!!
O tutorial me interessou para estudar WEB SERVICES, mas pesquisei e não achei muito conteudo da lib NUSOAP... Poderias me indicar um endereço onde posso achar conteudo de NUSOAP?

OBRIGADO DESDE JA, CORDIALMENTE
Responder
04/08/2014
Testei aqui, mas o cliente nao esta imprimindo nada. Nem no projeto que eu fiz e nem com o projeto que voce despinibilizou.
Sabe o motivo?

Ja testei alterar/retirar o encode, mudei de echo para print... Mas nada...
Responder
Vinícius Thiengo (1) (0)
04/08/2014
Fala Ramon, blz?
Verifica em seu php.ini se a printagem de erro está ativada e se a linha no php.ini que carrega o WebService nativo do php está comentada. Abraço
Responder