Erro ao utilizar método de um web service no PHP

1. Erro ao utilizar método de um web service no PHP

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 25/09/2018 - 09:01h

Prezados,

Estou trabalhando com web services SOA em PHP, junto com Zend Framework.

Criei um serviço simples, com os métodos sobre($firstName) e somar($n1, $n2).

Ao executar localmente, no meu servidor interno (http://prolissatk/servico3/server.php?wsdl e http://prolissatk/servico3/client.php), os métodos funcionam.

Método sobre(): https://i.stack.imgur.com/iV60i.png

Método somar(): https://i.stack.imgur.com/4fyyd.png

Realizei o upload para o servidor: http://www.prolissa.tk/servico3

Agora, o método sobre() funciona, enquanto o método somar() retorna o erro:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Procedure 'somar' not present</faultstring>

</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Método sobre() - on-line: https://i.stack.imgur.com/pfp1W.png

Método somar() - on-line: https://i.stack.imgur.com/4d4df.png

Segue o link de download do web service: http://www.prolissa.tk/servico3.zip

Segue o código fonte:

servidor.php

    <?php
/* URL do servidor referente ao Webservice */
//$serverUrl = "http://www.prolissa.tk/servico3/server.php";
$serverUrl = "http://prolissatk/servico3/server.php";
?>


server.php

   <?php
require_once __DIR__ . '/vendor/autoload.php';

/* URL do servidor referente ao Webservice */
require_once 'servidor.php';
$options = [
'uri' => $serverUrl,
];

/* Classe do Webservice */
class Calculadora
{
/**
* Informacoes da calculadora.
*
* @param string $firstName
* @return string $greetings
*/
public function sobre($firstName)
{
return 'Calculadora matemática. Desenvolvedor: ' . $firstName;
}

/**
* Somar dois numeros.
*
* @param integer $n1
* @param integer $n2
* @return integer $somaResultado
*/
public function somar($n1, $n2) {
$somaResultado = $n1 + $n2;
return $somaResultado;
}
}

$server = new Zend\Soap\Server(null, $options);

if (isset($_GET['wsdl'])) {
$soapAutoDiscover = new \Zend\Soap\AutoDiscover(new \Zend\Soap\Wsdl\ComplexTypeStrategy\ArrayOfTypeSequence());
$soapAutoDiscover->setUri($serverUrl);

$soapAutoDiscover->setOperationBodyStyle(array('use' => 'literal'));
$soapAutoDiscover->setBindingStyle(array('style' => 'document'));

$soapAutoDiscover->setClass('Calculadora');

// header("Content-Type: text/xml");
// echo $soapAutoDiscover->generate()->toXml();
$soapAutoDiscover->handle();
} else {
$soap = new \Zend\Soap\Server($serverUrl . '?wsdl');
$soap->setObject(new \Zend\Soap\Server\DocumentLiteralWrapper(new Calculadora()));
$soap->handle();
}
?>


cliente.php

    <?php
require_once __DIR__ . '/vendor/autoload.php';

/* URL do servidor referente ao Webservice que será consultado */
require_once 'servidor.php';
$serverUrl = $serverUrl . '?wsdl';

/* Instânciando o cliente */
$client = new Zend\Soap\Client($serverUrl);

/* Chamando métodos */
$result = $client->sobre(['firstName' => 'Diego']);
$result2 = $client->somar(['n1' => 4, 'n2' => 3]);

/* Exibindo os resultados */
echo $result->sobreResult . '<br/>';
echo $result2->somarResult . '<br/>';
?>


phpinfo() do servidor: http://www.prolissa.tk/info.php

O que devo fazer para que o serviço funcione no servidor?

Obrigado,

Diego M. Rodrigues


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts