Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Em qual dos cursos de PHP temos um exemplo de consumir um webservice soap em PHP?

Em qual dos cursos de PHP temos um exemplo de consumir um webservice soap em PHP?

2 respostas
solução!

Não me lembro disto ter sido abordado em algum curso. Quando você usa SOAP, o envio e o retorno de dados é feito em XML.

Aqui tem um código de exemplo:

class TESTE {

    protected $webservice;    
    protected $client;

    public function __construct(){
        //Webservice principal
        $this->webservice = "http://endereco_do_site/nome_do_webservice.svc?wsdl";
        $this->client = new SoapClient($this->webservice, array('exceptions' => true    ,'trace' => 1,'verifypeer' => false, 'verifyhost' => false,"ssl_method" => "SOAP_SSL_METHOD_SSLv23"));
    }    

    public function ExecutarFuncao(){
        try { 
            $opcoes = array("variavel1" => "valor1", "variavel2" => $valor2);

            $response = $this->client->nome_da_funcao_do_webservice(array('request'=>$opcoes));

            if(is_soap_fault($response)){
                echo 'erro do ws';
                trigger_error("SOAP Fault: (faultcode: {$response->faultcode}, faultstring: {$response->faultstring})", E_USER_ERROR);
                exit();
            }

            $xml_enviado = $this->client->__getLastRequest();
            $xml_recebido = $this->client->__getLastResponse();

            print_r($xml_enviado);
            print_r($xml_recebido);

            $xml = simplexml_load_string(preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $xml_recebido));
            $ns = $xml->getNamespaces(true);

            print_r($xml);            

        //} catch (SoapFault $this->client) {  
        } catch (Exception $e) {
            echo 'erro ws';
        }

    }

}

Aqui você tem alguns links que mostram como conectar e ler o XML.

https://thiagovespa.com.br/blog/2012/05/31/chamando-um-webservice-soap-com-php/
https://stackoverflow.com/questions/4637617/how-to-use-foreach-with-php-xml-simplexml/4637649

Muito obrigado pelas dicas. Eu só preciso consumir os dados como cliente. Já consegui implementar um script php que faz esse consumo, mas estou com dificuldades no parâmetros e organização dos resultados.