Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite galera, será que tem alguem que possa me dar uma força com webservices, eu preciso acessar este webservice https://servicoshm.saude.gov.br/cnes/ProfissionalSaudeService/v1r0?wsdl
é somente a 2º vez que estou trabalhando com webservice, da outra vez que trabalhei era para acessar o webservice dos correios para calcular o frete, então peguei o codigo e meio que tentei utiliza-lo, mas nao deu certo, o codigo é esse ai
<?php
include "lib/nusoap.php";
$cliente = new nusoap_client('https://servicoshm.saude.gov.br/cnes/ProfissionalSaudeService/v1r0?wsdl', true);
$headers = '
<soap:Header>
<wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-5FCA58BED9F27C406E14576381084652">
<wsse:Username>CNES.PUBLICO</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">cnes#2015public</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
';
$cliente->setHeaders($headers);
$parametros = array('numeroCNS' => '980016280595043');
$resultado = $cliente->call('ConsultarProfissionalSaude', $parametros);
print_r($resultado);
?>
nao sei se ajuda, mas o xml que o webservice recebe é esse aqui
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:prof="http://servicos.saude.gov.br/cnes/v1r0/profissionalsaudeservice" xmlns:fil="http://servicos.saude.gov.br/wsdl/mensageria/v1r0/filtropesquisaprofissionalsaude" xmlns:cns="http://servicos.saude.gov.br/schema/cadsus/v5r0/cns" xmlns:cpf="http://servicos.saude.gov.br/schema/corporativo/documento/v1r2/cpf">
<soap:Header>
<wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-5FCA58BED9F27C406E14576381084652">
<wsse:Username>CNES.PUBLICO</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">cnes#2015public</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<prof:requestConsultarProfissionalSaude>
<fil:FiltroPesquisaProfissionalSaude>
<cns:CNS>
<cns:numeroCNS>980016280595043</cns:numeroCNS>
</cns:CNS>
</fil:FiltroPesquisaProfissionalSaude>
</prof:requestConsultarProfissionalSaude>
</soap:Body>
</soap:Envelope>
Alguem sabe como acessar esse webservice?????Eu já tentei utilizar o Soap nativo do php, esta instalado e aparece no phpinfo, mas quando chamo a função __call, da um fatal error,
no webservice que eu tenho do correios, eu troco o nusoap_cliente pelo soap_client e o call pelo __call e da fatal error.
Tu sabe algum jeito no php de eu enviar para o webservice o xml que postei e receber o xml de response???
>
Em 11/04/2019 at 15:24, Fabrizio.Quadro disse:
Eu já tentei utilizar o Soap nativo do php, esta instalado e aparece no phpinfo, mas quando chamo a função __call, da um fatal error,
Qual o erro que ocorre?
>
Em 11/04/2019 at 15:24, Fabrizio.Quadro disse:
Tu sabe algum jeito no php de eu enviar para o webservice o xml que postei e receber o xml de response???
Poderia fazer usando cURL, mas ai já é reinventar a roda.
Vamos resolver o erro para que você possa usar a biblioteca recomendada.
<?php
include "lib/nusoap.php";
$cliente = new nusoap_client('http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL', true);
$parametros = array (
'nCdEmpresa' => ' ',
'sDsSenha' => ' ',
'nCdServico' => '41106',
'sCepOrigem' => '99010150',
'sCepDestino' => '78896000',
'nVlPeso' => '1',
'nCdFormato' => '1',
'nVlComprimento' => '16',
'nVlAltura' => '10',
'nVlLargura' => '20',
'nVlDiametro' => '0',
'sCdMaoPropria' => 'S',
'nVlValorDeclarado' => '200',
'sCdAvisoRecebimento' => 'S'
);
$resultado = $cliente->call('CalcPrecoPrazo', $parametros);
print_r($resultado);
?>
Esse ai en cima é o codigo que funciona com o nusoap segue o codigo com a classe soap nativa do php
<?php
$cliente = new SoapClient('http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL');
$parametros = array (
'nCdEmpresa' => ' ',
'sDsSenha' => ' ',
'nCdServico' => '41106',
'sCepOrigem' => '99010150',
'sCepDestino' => '78896000',
'nVlPeso' => '1',
'nCdFormato' => '1',
'nVlComprimento' => '16',
'nVlAltura' => '10',
'nVlLargura' => '20',
'nVlDiametro' => '0',
'sCdMaoPropria' => 'S',
'nVlValorDeclarado' => '200',
'sCdAvisoRecebimento' => 'S'
);
$resultado = $cliente->__Soapcall('CalcPrecoPrazo', $parametros);
print_r($resultado);
?>
Segue o erro que da
**Erro fatal** : exceção SoapFault não capturada: [WSDL] ERRO SOAP: análise de WSDL: não foi possível carregar de 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL': falha ao carregar a entidade externa " [http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL](http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL) "em /home/u660391699/public_html/teste/teste.php:4 Rastreamento de pilha: # 0 / home / u660391699 / public_html / teste / teste .php (4): SoapClient-> SoapClient ('http: //ws.corre ...') # 1 {main} lançado em **/home/u660391699/public_html/teste/teste.php** na linha **4**
**link para o phpinfo do meu servidor**
**[phpinfo](http://teste.webpel.info/phpinfo.php)**
Já testou consumir o WS via SoapUI?
Utilize a biblioteca SOAP do PHP e não nusoap.