-
Conteúdo Similar
-
Por GuilhermeDias
Bom dia, estou com muita dificuldade para enviar um XML de Request para o SoupClient.
XML DE REQUEST - ORIGINAL DA CONSULTA
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.consulta.spcjava.spcbrasil.org/"> <soapenv:Header/> <soapenv:Body> <web:filtro> <codigo-produto>325</codigo-produto> <tipo-consumidor>F</tipo-consumidor> <documento-consumidor>00752477714</documento-consumidor> </web:filtro> </soapenv:Body> </soapenv:Envelope> NO PROGRAMA SOUPUI FUNCIONA BEM, ME TRAZ O RETORNO DE XML CORRETO.
AGORA NO PHP NÃO CONSIGO DE NENHUMA MANEIRA.
TENTEI ASSIM, DEU ERRO
<?php $webserviceURL = "https://treina.spc.org.br/spc/remoting/ws/consulta/consultaWebService?wsdl"; $client = new SoapClient($webserviceURL, array("login"=>"XXXX","password"=>"XXXX")); $xml = '<?xml version=""1.0"" encoding=""utf-8""?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.consulta.spcjava.spcbrasil.org/"> <soapenv:Header/> <soapenv:Body> <web:filtro> <codigo-produto>325</codigo-produto> <tipo-consumidor>F</tipo-consumidor> <documento-consumidor>00752477714</documento-consumidor> </web:filtro> </soapenv:Body> </soapenv:Envelope>'; echo "<pre>"; print_r($client->consultar($xml)); echo "</pre>"; ?> TENTEI ASSIM, DEU ERRO TAMBEM
<?php $webserviceURL = "https://treina.spc.org.br/spc/remoting/ws/consulta/consultaWebService?wsdl"; $client = new SoapClient($webserviceURL, array("login"=>"XXX","password"=>"XXX")); $function = 'Consultar'; $s1 = '325'; $s2 = 'F'; $s3 = '00752477714'; $arguments= array('ns1:filtro' => array('codigo-produto' => ''.$s1 .'','tipo-consumidor' => ''.$s2 .'','documento-consumidor' => ''.$s3 .'')); $result = $client->__soapCall($function, $arguments); $txt = SimpleXML_Load_String($result); echo 'Response: '; print_r($arguments); ?>
-
Por Ellen Diana Guissoni
olá pessoal,
estou instanciando uma funcão para este webservice, mas não está dando certo.
O q eu estou fazendo de errado?
alguem poderia me ajudar ?
$client = new SoapClient('http://rondap.ura.uniube.br:8050/g5-senior-services/ronda_Synccom_senior_g5_rh_hr_relatorios?wsdl' true); $relIn = array( 'prRelatorio' => 'HRCP103.APU', 'prExecFmt' => 'tefFile', 'prDir' => $_SERVER['DOCUMENT_ROOT'].'/servicos/arquivos/', 'prFileName' => 'arquivo_20161122', 'prFileExt' => 'PDF', 'prSaveFormat' => 'tsfPDF', 'prEntrada' => '<EDatInR=18/08/2016><EDatFiR=17/09/2016><ELisDem=S><EMarAfa=S><EMarFol=S><EHorasAfastadas=S><EAbrGpe=N><EAbrEmp=1><EAbrTcl=1><EAbrCad=19430>', 'prEntranceIsXML' => 'F', 'prLOG' => 'T' ); $arguments = array( 'user' => '*******', 'password' => '*******', 'encryption' => 0, 'parameters' => $relIn ); $result = $client->Relatorios($arguments); return $result->RelatoriosResponse; -
Por ghlevin
Encontrei esse exemplo de envio de XML com o Soapclient. Funciona perfeitamente: <?php $client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL'); $function = 'ConvertTemp'; $arguments= array('ConvertTemp' => array( 'Temperature' => 31, 'FromUnit' => 'degreeCelsius', 'ToUnit' => 'degreeFahrenheit' )); $options = array('location' => 'http://www.webservicex.net/ConvertTemperature.asmx'); $result = $client->__soapCall($function, $arguments, $options); echo 'Response: '; print_r($result); ?> Só que eu gostaria de usar esses mesmos métodos do Soapclient, mas pra um XML puro como entrada. Nesse caso, acho que ele é:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ConvertTemp xmlns="http://www.webserviceX.NET/"> <Temperature>31</Temperature> <FromUnit>degreeCelsius</FromUnit> <ToUnit>degreeFahrenheit</ToUnit> </ConvertTemp> </soap:Body> </soap:Envelope> Alguém sabe como se faz? Estou usando esse exemplo existente como base pra uma aplicação que estou desenvolvendo e que envolve um XML com uma estrutura maior que essa e com maior número de parâmetros.
-
Por ghlevin
Encontrei esse exemplo de envio de XML com o Soapclient. Funciona perfeitamente: <?php $client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL'); $function = 'ConvertTemp'; $arguments= array('ConvertTemp' => array( 'Temperature' => 31, 'FromUnit' => 'degreeCelsius', 'ToUnit' => 'degreeFahrenheit' )); $options = array('location' => 'http://www.webservicex.net/ConvertTemperature.asmx'); $result = $client->__soapCall($function, $arguments, $options); echo 'Response: '; print_r($result); ?> Só que eu gostaria de usar esses mesmos métodos do Soapclient, mas pra um XML puro como entrada. Nesse caso, acho que ele é:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ConvertTemp xmlns="http://www.webserviceX.NET/"> <Temperature>31</Temperature> <FromUnit>degreeCelsius</FromUnit> <ToUnit>degreeFahrenheit</ToUnit> </ConvertTemp> </soap:Body> </soap:Envelope> Alguém sabe como se faz? Estou usando esse exemplo existente como base pra uma aplicação que estou desenvolvendo e que envolve um XML com uma estrutura maior que essa e com maior número de parâmetros.
-
Por cviniciussdias
Eu gostaria de saber como posso implementar os métodos de uma classe para utilizá-la com SoapServer.
A seguinte classe de exemplo funciona:
<?phpclass WebService { private $message; public function writeMessage($message) { $this->message = $message->message; return array("mensagem" => $this->message); } public function hW() { return array("mensagem" => "Hello world"); }} Mas, eu preciso retornar sempre um array?
E, os parâmetros não podem ser separados? Sempre têm que vir no formato de objeto?
E, eu também gostaria de saber se alguém conhece alguma ferramenta que gera o arquivo wsdl, pois até agora não encontrei nenhuma que funcione.
Muito obrigado desde já!
PS.: A Classe acima foi usada com:
<?php require('WebService.class.php'); $server = new SoapServer('meu.wsdl'); $server->setClass('WebService'); $server->handle(); e acessada com:
<?php$client = new SoapClient('meu.wsdl');var_dump($client->hW());var_dump($client->writeMessage(array('message' => 'Texto a ser retornado')));
-