Jump to content
Fabrizio.Quadro

Problemas ao Acessar webservice cadsus atraves do php

Recommended Posts

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?????

Share this post


Link to post
Share on other sites

Já testou consumir o WS via SoapUI?

 

Utilize a biblioteca SOAP do PHP e não nusoap.

Share this post


Link to post
Share on other sites

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???

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
<?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 "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 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By cleriston.melo
      Olá pessoal,
       
      Estou com a seguinte dúvida:
      Preciso impimir as informações de um array criado a partir de uma consulta ao banco de dados, mas preciso imprimir essas informações "quebrada".
      Ex: Nas informações contidas no array, tem cod_exp, controle, serie, cod_prod e quant_prod.
      Eu preciso imprimir as informações por serie.tipo:
       
      Série: 1
      (cod_prod)                     quant_prod
      Produto 1                          10
      Produto 2                          30
      Produto 3                          20
      Produto 4                          50
      ---------------
      Série: 2
      (cod_prod)                     quant_prod
      Produto 1                          10
      Produto 2                          30
      Produto 3                          20
      Produto 4                          50
      ---------------
      etc...
      ----------------------------------------
      O código é esse:
       
      <?php
                      $query_prod_exp = "select * from estoque_expositor where est_exp_cod_exp=$cod_exp and est_exp_ativo='S' order by est_exp_cod_exp";
                      $result_prod_exp = mysqli_query($con, $query_prod_exp) or die(mysqli_error());
                      $row_prod_exp = mysqli_fetch_array($result_prod_exp);
                      
                      $controle = $row_prod_exp['est_exp_controle'];
                      $serie = $row_prod_exp['est_exp_controle'];
                      $cod_prod = $row_prod_exp['est_exp_cod_prod'];
                      $saldo_atual = $row_prod_exp['est_exp_quant_prod'];
                      
                          // ESCREVE UMA LINHA NA TABELA
                          echo "<tr>";
                      
                          // ESCREVE UMA COLUNA NA TABELA E EXIBE O NOME DO PRODUTO
                          echo "<td>";
                          $query_prod = "select * from produtos where prod_id=$cod_prod";
                          $result_prod = mysqli_query($con, $query_prod) or die(mysqli_error());
                          while ($row_prod = mysqli_fetch_array($result_prod)) {
                              $prod = $row_prod['prod_nome'];
                              echo $prod."</td>";
                          }
                          echo "<td>" . $saldo_atual . "</td>";
                          echo "</tr>";
                  ?>
       
      Obrigado a todos pela ajuda...
    • By rohilario_
      Galera, boa tarde!
      Estou desenvolvendo um sistema com PHP, Mysql, JS e Bootstrap, que gerencia sorteios conforme cadastro.
      Tudo funcionando perfeitamente, contudo atualmente fazemos impressões em um layout e colocamos em uma urna, na qual acontece o sorteio manual..
      Gostaria, de alguma forma, criar uma tela de sorteio, onde ele buscaria as informações do banco (coluna cartela) e sorteasse um número de cartela qualquer com alguns efeitos de "suspense".
       
      O grande problema para mim até o momento: Fraco em JS apesar de fazer algumas "coisinhas"; Não faço ideia nem por onde começar, comecei tão somente lendo alguns efeitos com jquery.
      https://api.jquery.com/category/effects/
      Não sei como pegar as informações do banco mysql com JS.
      Sugeri o JS por conta das libs disponíveis, mas poderia ser com o proprio PHP...
       
      Agradeço as colaborações desde já!
    • By flarique
      iae pessoal, então eu estou querendo fazer o envio de um email do meu formulário por intermédio de um php que estou testando em um servidor ativo!
      este é o formulário e o meu problema é explicitamente com a passagem de informação do bootstrap 4 escrito em html para o php.
      este é o formulário.
      <!-- Formulario --> <div class="container"> <div class="row"> <div class="col-12 text-center my-5"> <h1 class="display-4 text-danger"><i class="fa fa-paper-plane text-danger" aria-hidden="true"></i>Enviar e-mail</h1> </div> </div> <div class="row justify-content-center mb-5"> <div class="col-sm-12 col-md-10 col-lg-8"> <form action="../Teste.php" method="post" role="form"> <div class="form-row"> <div class="form-group col-sm-6"> <label class="text-dark" for="InputName" >Nome completo</label> <input type="text" class="form-control" id="InputName" name="nome" required placeholder="Nome"> </div> </div> <div class="form-row"> <div class="form-group col-sm-12"> <label class="text-dark" for="inputEnd">Email</label> <input type="email" class="form-control" id="inputEnd" nome="email" required placeholder="Endereço completo"> </div> </div> <div class="form-row"> <div class="form-group col-sm-6"> <label class="text-dark" for="inputCidade">Sua cidade</label> <input type="text" class="form-control" id="inputCidade" name="cidade" required placeholder="Cidade"> </div> </div> <div class="form-row"> <div class="col-sm-12"> <button type="submit" class="btn btn-primary">Enviar</button> <a tabindex="0" class="btn btn-secondary ml-2" role="button" data-toggle="popover" data-placement="right"data-trigger="focus" title="Ajuda!" data-content="Preença todas as caixas.">Ajuda</a> </div> </div> </form> </div> </div> </div> e este é o php que deve receber as informações do formulario pelo method="post" e o action="../Teste.php" mas as variaveis do php não mudam.
      este é o php.
      <?php $name = $_POST['name']; $email = $_POST['email']; $cidade = $_POST['cidade']; $email_from = 'Teste'; $email_subject = 'Teste2'; $email_body = "Name: $name.\n". "Email: $email.\n". "Cidade: $cidade.\n"; $to = "enriboliveira@gmail.com"; $headers = "From $email_from \r\n"; $headers .= "Reply-to: $email \r\n"; echo "nome : $name"; ?>  
    • By Nipo
      Estou com dúvida se tem como fazer um código em php para fazer upload de uma imagem de um diretório fixo(em vez de abrir uma janela para fazer upload) para um diretório para o servidor.
       
    • By lulabel
      Necessito criar um quiz usando matriz, session e placar mas não consigo de jeito nenhum, já tentei procurar videos ou algum lugar explicando como posso fazer isso, mas até agora nada, fico travado. Sou iniciante no php ainda então qualquer ajuda é uma luz bem vinda.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.