Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal, sou novo aqui, então desculpe se minha dúvida não for explanada conforme orientação do fórum.
Estou precisando consumir uma solução de segurança via SOAP, estou utilizando a biblioteca nusoap.php, fiz as chamadas conforme exemplos que achei.
Me parece que ele comunica e trás o modelo xml, porem exibe a seguinte mensagem:
wsdl error: XML error parsing WSDL from https://homologacao....scAdminWS?wsdl on line 1: Not well-formed (invalid token)
Não achei mais nada sobre este erro. Para ajudar a entender o que fiz segue abaixo o código:
_____________________________________________________________________________________
include ('lib/nusoap.php');
$username = 'user';
$password = 'pass';
$useCURL = isset($_POST['usecurl']) ? $_POST['usecurl'] : '0';
$proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : 'proxy';
$proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '8080';
$client = new nusoap_client("https://homologacao.../SscAdminWS?wsdl", 'wsdl', $proxyhost, $proxyport);
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
//$client->setUseCurl($useCURL);;
//$client->loadWSDL();
$client->setCredentials($username, $password);
$result = $client->call('retornaUsuario', array('cpf'=>'123.456.789-10'));
if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
// Check for errors
$err = $client->getError();
if ($err) {
// Display the error
echo '<h2>Error</h2><pre>' . $err . '</pre>';
} else {
// Display the result
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
print_r($result);
echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
Obrigado.
Gabriel, obrigado pela ajuda.
Já não utilizo mais o NuSoap, o código ficou da seguinte forma:
Código:_____________________________________________________________________________
$login = 'login';
$password = 'pass';
$soapServer = 'https://homologacao.../SscAdminWS?wsdl';
$conexao = new SoapClient(
$soapServer, array(
'login' => $login,
'password' => $password,
'proxy_host' => 'proxy',
'proxy_port' => 8080
));
$response = $conexao->__soapCall('retornaUsuario' , array('cpf' => '000.000.000-00'));
Retorno:___________________________________________________________________________
Fatal error: Uncaught SoapFault exception: [soap:Server] Campo de preenchimento obrigatório não fornecido: login in /var/www/html/iomg/lab/teste.php:20Stack trace:#0 /var/www/html/iomg/lab/teste.php(20): SoapClient->__soapCall('retornaUsuario', Array)#1 {main} thrown in /var/www/html/iomg/lab/teste.php on line 20
Gabriel bom dia!
Não estava faltando um campo, apesar da mensagem. A chamada estava errada, segue a correta:
$response = $conexao->__soapCall('servico' , array('servico'=>array (parametros));
As 'fault' foram tratadas e tudo esta como o esperado.
Agradeço a ajuda!
O erro apenas indica que o WSDL é inválido. Utiliza SOAP do PHP e não nusoap.
nusoap foi desenvolvido para o PHP 4, é uma biblioteca terceira. SOAP foi desenvolvido para o PHP 5 e é nativa.
Valide seu WSDL com o software SoapUI. Provavelmente, se você abrir ele no navegador já encontrará que está mal formatado.