Ir ao conteúdo

Posts recomendados

Postado

Pessoall, 

Sou novo em utilizar Webservice em PHP e quando chamo função __soapCall(), sempre me retorna um valor como se não tivesse passado o usuário e a senha. porém quando coloco a informação no SOAPUI funciona, o que estou fazendo de errado??? como faço para conseguir o retorno correto PHP? acho que o codigo esta entendo como se não tivesse conseguindo passar o parametro...

XML

 
<s:schema elementFormDefault="qualified" targetNamespace="http://www.exemplo.com.br/ws">
<s:element name="AutenticarUsuario">
<s:complexType/>
</s:element>
<s:element name="AutenticarUsuarioResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AutenticarUsuarioResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AutenticacaoHeader" type="tns:AutenticacaoHeader"/>
<s:complexType name="AutenticacaoHeader">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Senha" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="TokenAutenticado" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string"/>
</s:sequence>
<s:anyAttribute/>
</s:complexType>
 

Código PHP

$client = new SoapClient("http://www.exemplo.com.br/PoweredBy/PoweredByWebService.asmx?WSDL");
$parametro = new StdClass();
$parametro = array(  "Usuario"=>"'fabio'",
                                  "Senha"=>"'123456'",
                                 "Email"=>"'[email protected]'");
$result = $client->__soapCall("AutenticarUsuario", $parametro); 
print_r($result);

Retorno PHP

stdClass Object ( [AutenticarUsuarioResult] => Por favor informe um e-mail e senha )

SOAP Request

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="http://www.exemplo.com.br/ws">
   <soap:Header>
      <ws:AutenticacaoHeader>
         <!--Optional:-->
         <ws:Usuario>fabio</ws:Usuario>
         <!--Optional:-->
         <ws:Senha>123456</ws:Senha>
         <!--Optional:-->
         <ws:Email>[email protected]</ws:Email>
      </ws:AutenticacaoHeader>
   </soap:Header>
   <soap:Body>
      <ws:AutenticarUsuario/>
   </soap:Body>
</soap:Envelope>

SOAP Retorno 

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <AutenticarUsuarioResponse xmlns="http://www.exemplo.com.br/ws">
         <AutenticarUsuarioResult>d2149dc5-ce6f-472d-9a83-b950ce3c3f27</AutenticarUsuarioResult>
      </AutenticarUsuarioResponse>
   </soap:Body>
</soap:Envelope>

 

Postado

Amigo, tudo certo ?

Já ralei um pouco para usar webservices SOAP em php, até descobrir que em PHP é bem mais simples "a coisa".

"websevice" na realidade é toda e qualquer rotina (serviço) que é executada no servidor e serve dados para um cliente na web.

Se o seu serviço é em PHP, não é necessário usar SOAP.

Conselho: Avalie realmente a necessidade de ser SOAP, às vezes configurações no servidor obrigam usar SOAP.  Faça em PHP direto e use JSON que funciona bacana. Todas as linguagens client-side ou que são desktop windows-forms hoje em dia suportam JSON, no seu caso mais precisamente, aco que AJAX. 

Eu fiz o meu, tenho quase 3000 clientes acessando e muita concorrencia e funciona liso.

Só como exemplo, o sistema de busca e cep dos correios é em PHP direto, sem JSON ainda por cima.

 

Espero ter ajudado.

 

Abraços.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!