Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jonatas Rafael

[AJUDA] WebServices SOAP

Recommended Posts

Boa tarde amigos,

 

Estou com problemas para consumir um webservices soap,

 

clienteWriteData.php

<?php // cliente php

// inclusao do arquivo da classe NuSOAP
include('nusoap/lib/nusoap.php');
include('ItemValue.php');

// define a localizacao do wsdl
$wsdl = 'http://localhost:8080/ScadaBR/services/API?wsdl';

// criacao de uma instancia do cliente
$cliente = new nusoap_client($wsdl, true);

// verifica se ocorreu algum erro na inicializacao do objeto
$err = $cliente->getError();

if ($err) {
  echo 'Erro no construtor<pre>".$err"</pre>';
}
else {
  echo 'Nenhum erro na inicializacao...' ;
  printf("\n");
}

$proxy = $cliente->getProxy();

$ItemValue = new ItemValue();

$ItemValue->itemName = "Bomba01";
$ItemValue->dataType = 'BOOLEAN';
$ItemValue->value = '0';
$ItemValue->quality = 'GOOD';
$ItemValue->timestamp = time();

$iv1 = array("itemName" => "Bomba01", "dataType" => 'BOOLEAN', "value" => '0', "quality" => 'GOOD',
"timestamp" => time());


$itemsList = array($iv1);
echo '<pre>';
print_r($itemsList);
echo '</pre>';

$param = array($itemsList);
echo '<pre>';
print_r($param);
echo '</pre>';

// chama o metodo browseTags
$result = $proxy->call('writeData', $param);

// Check for a fault
if ($proxy->fault) {
	echo '<h2>Fault</h2><pre>';
	print_r($result);
	echo '</pre>';
} else {
	// Check for errors
	$err = $proxy->getError();
	if ($err) {
		// Display the error
		echo '<h2>Error</h2><pre>' . $err . '</pre>';
	} else {
		// Display the result
		echo '<h2>Result</h2><pre>';
		print_r($result);
		echo '</pre>';
	}
}

if ($result == null) {
  echo 'Retorno nulo !';
}

//exibe o resultado
print_r($result);

?>

 

SAIDA ->

 

Result

Array
(
    [errors] => Array
        (
            [code] => INSUFFICIENT_PARAMETERS
            [description] => Faltam par�metros obrigat�rios. (itemList)
        )

    [replyBase] => Array
        (
            [rcvTime] => 2017-09-11T19:18:38.654Z
            [replyTime] => 2017-09-11T19:18:38.654Z
        )

)

Array ( [errors] => Array (

 => INSUFFICIENT_PARAMETERS [description] => Faltam par�metros obrigat�rios. (itemList) ) [replyBase] => Array ( [rcvTime] => 2017-09-11T19:18:38.654Z [replyTime] => 2017-09-11T19:18:38.654Z ) )


 

WSDL :

https://www.wsdl-analyzer.com/service/service/1917208614?version=1

 

Site do Desenvolvedor

http://www.scadabr.com.br

Exemplos para utilização do webservices:

https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/scadabr

 

 

Agradeço desde já!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por marcelo.ourico
      Boa noite. Pessoal, mais uma vez aqui pedindo uma ajuda.

      Estou tentando enviar uma NFSe via SOAP.

      Estou recebendo o seguinte erro:

      Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] ERRO : cvc-complex-type.4: Attribute 'Algorithm' must appear on element 'ns2:CanonicalizationMethod'. in

      O meu Array está da seguinte forma:
      Array
      (
      [CanonicalizationMethod] => Array
      (
      [@attributes] => Array
      (
      [Algorithm] => http://www.w3.org/TR/2001/REC-xml-c14n-20010315
      )
      )

      Não entendi o porque desse erro, alguém sabe ajudar?
    • Por vmmh
      Alguma alma caridosa que me possa ajudar ?
      há dias que ando com este problema e não consigo resolver. Ficaria eternamente grato se alguém pudesse ajudar
       
      o codigo abaixo em localhost funciona na perfeição , mas em produção , no lado do servidor , nada... HTTP error 500.
      o pedido que estou a fazer está noutro dominio com porta 81 e no meu dominio uso certificado de segurança. Será por aí?
      de qualquer forma o wsdl está   aqui:
       
       
      $client = new SoapClient('https://dekrainspecoes.pt/acp/PROD_CustomUI_ACP_Member_Validation_WS.WSDL');
      $result = $client->QueryByNumCartao(array('N_Cartao' => "705684011673122085"));
      if (!empty($result->QueryByNumCartao_Output->Cartao_Ativo)) {
       
          echo 'The userId : '.$result->QueryByNumCartao_Output ->Pessoa_ID;
      }
       
      $JSON = json_encode($result);
    • Por wolfphw
      Bom dia caros amigos,
       
      estou precisando fazer uma consulta em um WS da Receita Federal mas estou me batendo com algumas dúvidas.
       
      Instalei o certificado que eles me passaram na minha máquina e pelo navegador quando colo a URL do WS ele mostra tudo correto os tipos de consultas e tal, meu problema está no desenvolvimento do client para fazer essa consulta, eu preciso instalar algum Certificado localmente?
       
      E como devo fazer a conexão da minha aplicação com esse WS?
       
      Estou tentando assim:
      <?php require("biblioteca/nusoap.php"); $wsdl = "https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl"; $formaBusca = "listarEmpPorCPF"; $ListaDeCPF = "12345678910"; $CPFUsuario = "12345678910"; $sslcertfile = 'certificado.pem'; $sslkeyfile = 'key.pem'; $passphrase = 'senha'; $param = array('CPFUsuario' => $CPFUsuario, 'ListaDeCPF' => $ListaDeCPF); $soap = new nusoap_client($wsdl, 'wsdl'); $soap->setCredentials("", "", 'certificate', array( 'sslcertfile' => $sslcertfile, 'sslkeyfile' => $sslkeyfile, 'passphrase' => $passphrase, 'verifypeer' => 0, 'verifyhost' => 0 ) ); if($err = $soap->getError()) { die('Error: '.$err); } $result = $soap->call($formaBusca, array('parameters' => $param), '', '', false, true); if($soap->fault) { echo 'Fault! <pre>'; var_dump($result); echo '</pre>'; } else { if($err = $soap->getError()) { die('Error: '.$err); } else { echo '<pre>'; var_dump($result); die('</pre>'); } } ?> E está me dando o seguinte erro:
       
      Error: wsdl error: Getting https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl - HTTP ERROR: cURL ERROR: 58: could not load PEM client certificate, OpenSSL error error:02001003:system library:fopen:No such process, (no key found, wrong pass phrase, or wrong file format?)
    • Por jotapems
      Bom dia,
      estou tentando criar uma integração a um webservice utilizando o seguinte link do serviço:
      https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl
       
      Para tanto, fiz o seguinte código-teste:
       
      <?php $client = new SoapClient("https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl"); $function = "consultarProcesso"; $arguments = array ( "idConsultante" => "xxx", "senhaConsultante" => "xxx", "numeroProcesso" => "50243604120198130702", "movimentos" => true ); $result = $client->__soapCall($function, $arguments); print $result; ?>  
      Contudo, ao executar o código, recebo o seguinte erro:
      Fatal error: Uncaught SoapFault exception: [soap:Client] Message part param1 was not recognized. (Does it exist in service WSDL?) in C:\xampp\htdocs\wstest\test.php:13 Stack trace: #0 C:\xampp\htdocs\wstest\test.php(13): SoapClient->__soapCall('consultarProces...', Array) #1 {main} thrown in C:\xampp\htdocs\wstest\test.php on line 13  
      Se alguém puder me ajudar, agradeço muito!!
    • Por peterhall
      Preciso consumir um web service soap (wsdl) com certificado digital mas não estou a conseguir.
      Testei através do SoapUI e resultou sem erros, mas na hora de aplicar num script de php, não estou a conseguir que funcione.
      O que fiz até ao momento: converti o certificado digital de .pfx para .pem com chave privada incluída e procurei executar o script com os parâmetros de conexão e xsd de saída.
      Na documentação consta este xsd de saída:
       
      A resposta, se com erro, deverá ser:
       
      Resposta sem erro:
       
      O meu script:
      <?php date_default_timezone_set("America/Fortaleza"); $time = new DateTime; $data = $time->format(DateTime::ATOM); $wsdl = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl'; $endpoint = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo'; $certificate = "certificado.pem"; $password = 'senha'; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE, array('versao' => '1.12', 'dataHora' => $data, 'ambiente' => '2', 'codigoServentia' => '000123', 'nomePessoa' => 'Nome de Teste', 'tipoDocumento' => '1', 'idSolicitacaoSelo' => '1', 'sequencial' => '1', 'codigo' => '6', 'quantidade' => '10' ) ); try { $soapClient = new SoapClient($wsdl, $options); } catch(Exception $e) { var_dump($e); }  
      O erro que tenho recebido:
       
      Onde estarei errando?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.