lusigmas 0 Denunciar post Postado Dezembro 2, 2014 Olá pessoal. Passei o dia todo tentando resolver uma questão e não consegui nenhum resultado, espero que possam me dar uma ajuda. Tenho um aplicativo em php que precisa receber dados de um webservice, que é de outra empresa. Eles não tem documentação e tudo que me enviaram foi: WSDL: https://urlparceiro/wsparceiro/services/ExpData?wsdl Exemplo de utilização: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.urlparceiro/"> <soapenv:Header/> <soapenv:Body> <ser:ExpData> <!--Optional:--> <item0> <erro>true</erro> <mensagemErro>true</mensagemErro> <parametros>{'empresa':'1','codigo':'2','chave':'12abc','tipoSaida':'xml'}</parametros> <retorno>xml</retorno> <tipoArquivoRetorno>xml</tipoArquivoRetorno> </item0> </ser:ExpData> </soapenv:Body> </soapenv:Envelope> Utilizei a classe nuSoap, mas o campo <parametros> sempre dá erro. Meu script: require_once('../lib/nusoap.php'); $client = new nusoap_client('https://urlparceiro/wsparceiro/services/ExpData?wsdl'); $params = array( 'arg0' => array( 'erro' => true, 'mensagemErro' => true, 'parametros' => "{'empresa':'1','codigo':'2','chave':'12abc', 'tipoSaida':'xml')", 'retorno' => 'xml', 'tipoArquivoRetorno' => 'xml' )); $result = $client->call('ExpData', $params, 'http://services.urlparceiro.com/', 'http://services.urlparceiro.com/'); if ($client->fault) { echo '<h2>Fault (Expect - The request contains an invalid SOAP body)</h2><pre>'; print_r($result); echo '</pre>'; } else { $err = $client->getError(); if ($err) { echo '<h2>Error</h2><pre>' . $err . '</pre>'; } else { echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>'; } } O resultado: Array( [erro] => true [mensagemErro] => Erro no formato Json dos parametros [parametros] => {'empresa':'1','codigo':'2','chave':'12abc', 'tipoSaida':'xml') [retorno] => xml [tipoArquivoRetorno] => xml) Já alterei a string, usei json_decode, trim, mas nada resolve, só muda a mensagem de erro. Usando jason_decode o erro é: 'XML error parsing SOAP payload on line 1: Invalid character' Usando trim: Fault (Expect - The request contains an invalid SOAP body)Array( [faultcode] => soap:Server [faultstring] => java.lang.NullPointerException) Alguma ideia de como resolver? Agradeço muito quem puder ajudar. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Luis Paullo 47 Denunciar post Postado Dezembro 3, 2014 Ja fez assim? 'parametros' => json_encode(['empresa'=>1,/*....*/]) Compartilhar este post Link para o post Compartilhar em outros sites
lusigmas 0 Denunciar post Postado Dezembro 3, 2014 Olá Luis Paullo, não, irei tentar agora e postarei o resultado. Valeu o apoio. Abs. Ja fez assim? 'parametros' => json_encode(['empresa'=>1,/*....*/]) Não funcionou, continua dando: Erro no formato Json dos parametros. Alguma outra ideia? Abs. Compartilhar este post Link para o post Compartilhar em outros sites
Luis Paullo 47 Denunciar post Postado Dezembro 3, 2014 Tira essa tag parametros e faça um teste. Compartilhar este post Link para o post Compartilhar em outros sites
lusigmas 0 Denunciar post Postado Dezembro 3, 2014 Tirei, ainda não funcionou. A mensagem de erro: Array ( [faultcode] => soap:Server [faultstring] => java.lang.NullPointerException ) Fault (Expect - The request contains an invalid SOAP body)Array( [faultcode] => soap:Server [faultstring] => java.lang.NullPointerException) Como não consegui resolver com o nuSoap, fiz com o Soap e finalmente funcionou: $parametros = "{'empresa':'".$empresa."','codigo':'".$codigo."','chave':'".$chave."', 'tipoSaida':'".$tipoSaida."'}"; $client = new SoapClient('https://urlparceiro/wsparceiro/services/ExpData?wsdl'); $params = array('ExpData' =>array( 'arg0' => array( 'erro' => true, 'mensagemErro' => true, 'parametros' => $parametros, 'retorno' => 'xml', 'tipoArquivoRetorno' => 'xml' ))); $result = $client->__soapCall('ExpData', $params); echo 'Response: '; print_r($result); Obrigada pelo apoio Luis Paullo! Abs. Compartilhar este post Link para o post Compartilhar em outros sites