Ir para conteúdo

Arquivado

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

7Canim

Enviar dados via SOAP

Recommended Posts

Bom dia

 

Estou desenvolvendo um sistema que faça conexão com o SISBOV e algumas funções estão dando erros.

 

Estou testando vários códigos diferentes e dão diferentes erros, mas no suapUi está funcionando normal

 

Citar

 

<element name="incluirPropriedade">
<complexType>
<sequence>
<element name="usuario" type="xsd:string"/>
<element name="senha" type="xsd:string"/>
<element name="_nirf" type="xsd:string"/>
<element name="_incra" type="xsd:string"/>
<element name="_tipoPropriedade" type="xsd:long"/>
<element name="_nomePropriedade" type="xsd:string"/>
<element name="_acessoFazenda" type="xsd:string"/>
<element name="_distanciaSedeMunicipio" type="xsd:int"/>
<element name="_orientacaoLatitude" type="xsd:string"/>
<element name="_grauLatitude" type="xsd:int"/>
<element name="_minutoLatitude" type="xsd:int"/>
<element name="_segundoLatitude" type="xsd:int"/>
<element name="_orientacaoLongitude" type="xsd:string"/>
<element name="_grauLongitude" type="xsd:int"/>
<element name="_minutoLongitude" type="xsd:int"/>
<element name="_segundoLongitude" type="xsd:int"/>
<element name="_area" type="xsd:long"/>
<element name="_logradouro" type="xsd:string"/>
<element name="_bairro" type="xsd:string"/>
<element name="_cep" type="xsd:string"/>
<element name="_codMunicipio" type="xsd:string"/>
<element name="_enderecoCorrespondenciaLogradouro" type="xsd:string"/>
<element name="_enderecoCorrespondenciaBairro" type="xsd:string"/>
<element name="_enderecoCorrespondenciaCep" type="xsd:string"/>
<element name="_enderecoCorrespondenciaCodMunicipio" type="xsd:string"/>
<element name="_telefoneResidencial" type="xsd:string"/>
<element name="_faxResidencial" type="xsd:string"/>
<element name="_nrTelefoneContato" type="xsd:string"/>
<element name="_nrFaxContato" type="xsd:string"/>
</sequence>
</complexType>
</element>

 

 

Esse é o XML que eu preciso cadastrar

 

 

<?php

try {
    $wsdl_url = 'http://homolog.agricultura.gov.br/sisbov_ws_nova_hom/';
    $client = new SOAPClient($wsdl_url);
    $params = array(
        'usuario' => "XXXXXXXXXX",
        'senha' => "XXXXXXXXXX",
        'nirf' => "XXXXXXX",
        'incra' => "XXXXXXXXXX",
        'tipoPropriedade' => "X",
        'nomePropriedade' => "XXXXXXXXXX",
        'acessoFazenda' => "XXXXXXXXXX",
        'distanciaSedeMunicipio' => "XXXXXXXXXX",
        'orientacaoLatitude' => "X",
        'grauLatitude' => "XX",
        'minutoLatitude' => "XX",
        'segundoLatitude' => "X",
        'orientacaoLongitude' => "X",
        'grauLongitude' => "XX",
        'minutoLongitude' => "XX",
        'segundoLongitude' => "XX",
        'area' => "XXXXXXXXXX",
        'logradouro' => "XXXXXXXXXX",
        'bairro' => "XXXXXXXXXX",
        'cep' => "XXXXXXXXXX",
        'codMunicipio' => "XXXXXXXXXX",
        'enderecoCorrespondenciaLogradouro' => "XXXXXXXXXX",
        'enderecoCorrespondenciaBairro' => "XXXXXXXXXX",
        'enderecoCorrespondenciaCep' => "XXXXXXXXXX",
        'enderecoCorrespondenciaCodMunicipio' => "XXXXXXXXXX",
        'telefoneResidencial' => "",
        'faxResidencial' => "",
        'nrTelefoneContato' => "XXXXXXXXXX",
        'nrFaxContato' => "XXXXXXXXXX",
    );
    $return = $client->incluirPropriedade($params);
    print_r($return);
} catch (Exception $e) {
    echo "Exception occured: " . $e;
}

Tanto o incluirPropriedade como o alterarPropriedade dá errado nos 4 códigos diferentes que eu tentei.

Nesse código dá o erro ERR_CONNECTION_RESET (estou usando Google Chrome)

 

<?php 
ini_set("soap.wsdl_cache_enabled", "0"); // Desabilita Cache do WSDL

$config['soap']['usuario']="XXXXXXXXXXXX"; //Nome do Usuario == CNPJ da Certificadora
$config['soap']['senha']="XXXXXXXXXXXX"; //Senha == Senha do FTP
$config['soap']['uri']="http://servicosWeb.sisbov.mapa.gov.br"; //NameSpace do WSDL
$config['soap']['location']='http://homolog.agricultura.gov.br/sisbov_ws_nova_hom/';//ENDERECO DO WSDL DO WEBSERVICES
$client = new SoapClient(null, array('uri' => $config['soap']['uri'], 'location' => $config['soap']['location'])); //Cria o Cliente de WebServices

try { //Tente Executar a Chamada
//Object incluirPropriedade(string usuario, string senha, string nirf, string incra, long TipoPropriedade, string nome, string roteiroDeAcesso, int distanciaSedeMunicipio, string orientacaoLatitude, int grauLatitude, int minutoLatitude, int segungaLatitude, string orientacaoLongitude, int grauLongitude, int minutoLongitude, int segundoLongitude, long area, string endereco, string bairro, string cep, string codMunicipio, string EnderecoCorres, string bairroCorres, string cepCorres, string codMunicipio, string telefoneResidencial, string faxResidencial, string telefoneContado, string faxContato);
        $retorno = $client->incluirPropriedade($config['soap']['usuario'], $config['soap']['senha'], 'XXXXXXXXX', '', 1, 'Fazendinha do Bita', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 4500, 'S', 20, 29, 0, 'W', 51, 54, 11, 1321800, 'No meio do mato', '...', '79600000', '5008305', 'Rua qualquer', 'Centro', '79600000', '5008305', '', '', '12345678', '12345678'); //Chama a funcao no WebServices
        print_r($retorno); //Exibe Resultado na Tela
} catch (SoapFault $exception) { //Em caso de erros
        echo $exception; //Exibe erros na tela
}

Nesse código, o XML pede long, mas o PHP não tem long então dá erro de conversão 

 

O erro:

 

SoapFault exception: [soapenv:Server.userException] org.xml.sax.SAXException: Bad types (int -> long) in C:\xampp\htdocs\TestePHP\alterar\alterarPropriedade.php:13 Stack trace: #0 C:\xampp\htdocs\TestePHP\alterar\alterarPropriedade.php(13): SoapClient->__call('alterarPropried...', Array) #1 {main}

 

<?php

$url = 'http://homolog.agricultura.gov.br/sisbov_ws_nova_hom/';
$client = new SoapClient($url);

$xmlr = new SimpleXMLElement('<incluirPropriedade></incluirPropriedade>');
$xmlr->addChild('usuario', 'XXXXXXXXXXXXXXX');
$xmlr->addChild('senha', 'XXXXXXXXXXX');
$xmlr->addChild('nirf', 'XXXXXXXXX');
$xmlr->addChild('incra', 'XXXXXXXXXXXX');
$xmlr->addChild('tipoPropriedade', '1');
$xmlr->addChild('nomePropriedade', 'Fazendinha do Bita');
$xmlr->addChild('acessoFazenda', 'XXXXXXXXXXXXXXXX');
$xmlr->addChild('distanciaSedeMunicipio', '4500');
$xmlr->addChild('orientacaoLatitude', 'S');
$xmlr->addChild('grauLatitude', '20');
$xmlr->addChild('minutoLatitude', '29');
$xmlr->addChild('segundoLatitude', '0');
$xmlr->addChild('orientacaoLongitude', 'W');
$xmlr->addChild('grauLongitude', '51');
$xmlr->addChild('minutoLongitude', '54');
$xmlr->addChild('segundoLongitude', '11');
$xmlr->addChild('area', '1321800');
$xmlr->addChild('logradouro', 'No meio do mato');
$xmlr->addChild('bairro', '...');
$xmlr->addChild('cep', '79600000');
$xmlr->addChild('codMunicipio', '5008305');
$xmlr->addChild('enderecoCorrespondenciaLogradouro', 'Rua qualquer');
$xmlr->addChild('enderecoCorrespondenciaBairro', 'Centro');
$xmlr->addChild('enderecoCorrespondenciaCep', '79600000');
$xmlr->addChild('enderecoCorrespondenciaCodMunicipio', '5008305');
$xmlr->addChild('telefoneResidencial', '');
$xmlr->addChild('faxResidencial', '');
$xmlr->addChild('nrTelefoneContato', '12345678');
$xmlr->addChild('nrFaxContato', '12345678');

$params = new stdClass();
$params->xml = $xmlr->asXML();

$result = $client->incluirPropriedade($params);

Nesse código dá o mesmo erro ERR_CONNECTION_RESET (estou usando Google Chrome)

 

 

<FONTES!!!> O primeiro código é do netbeans mesmo, o segundo tirei de um outro desenvolvedor SISBOV, e o terceiro adaptei da internet (não achei o tópico) 

 

 

Já tentei desabilitar esse erro do Chorme, mas não consegui

 

Se alguém souber como me ajudar, por favor

 

Desde já, obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça primeiro um teste utilizando o SoapUI, veja se tudo ocorre conforme o esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

$xml = <<<XML
<soapenv:Envelope ........>
<soapenv:Header/>
<soapenv:Body>
    <ser:Teste>
    <ser:usuario>Valores</ser:usuario>
    <ser:senha>Valores</ser:senha>
    <ser:numeroSolicitacao>Valores</ser:numeroSolicitacao>
    <ser:cpfProdutor></ser:cpfProdutor>
    <ser:cnpjProdutor>Valores</ser:cnpjProdutor>
    <ser:idPropriedadeDestino>Valores</ser:idPropriedadeDestino>
    <ser:tipoIdentificacao>Valores</ser:tipoIdentificacao>

    </ser:Teste>
</soapenv:Body>
</soapenv:Envelope>
XML;

$errno = 0;
$error = null;

$fp = fsockopen( 'http://homolog.agricultura.gov.br' , 80 , $errno , $error );

if ( is_resource( $fp ) ){
    $resp = null;
    $post = "POST / HTTP/1.1\r\n";
    $post .= "Host: http://homolog.agricultura.gov.br\r\n";
    $post .= "SOAPAction: \r\n";
    $post .= "Content-Type: text/xml; charset=utf-8\r\n";
    $post .= sprintf( "Content-Length: %d\r\n\r\n" , strlen( $xml ) );
    $post .= $xml;

    fwrite( $fh , $post , strlen( $xml ) );

    while ( !feof( $fp ) ){
    $resp .= fgets( $fp , 1024 );
    }

    var_dump( $rest );

    fclose( $fp );
} else {
    echo 'Opz[ ' , $errno , ' ] -> ' , $error;
}

Estou com o mesmo problemas em outras funções. Testei esse código na função inventariarSolicitacaoNumeracao e deu o erro:

Citar

 

Warning: fsockopen(): unable to connect to http://homolog.agricultura.gov.br:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in C:\xampp\htdocs\TestePHP\inventariar\inventariarSolicitacaoNumeracao.php on line 132
Opz[ 0 ] -> Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?

 


 

 

O fato de eu estar usando a porta 81 interfere? Preciso curar outro arquivo XML com esse XML? 

 

Como eu resolvo esse erro?

 

Desde já, obrigada 

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa tudo bem, bem pelo que deu para entender você trabalha com certificação de gado ou em alguma propriedade que quer incluir animais via Web service do ministério da agricultura, realmente seu código olhando por cima parece correto, o problema que se não me engano a URL não é essa ai, afinal ele não consegue abrir um Socket nessa url, já tentou http://servicosWeb.sisbov.mapa.gov.br com as credenciais ai da sua certificadora ou propriedade?

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer ao auxílio dos amigos, mas preciso entender e resolver um problema.
       
      Tenho uma Rotina que o usuário seleciona os produtos que deseja para requerer ao setor responsável.
       
      O usuário escolhe um produto qualquer e Clicla em um button para incluir a lista.

      O problema que estou enfrentando é que após escolher o produto e teclar ENTER o Sistema já salva no BD.
       
      Gostaria de criar uma Tecla de Atalho, para quando incluir/escolher o produto na lista, o usuário tecla como exemplo:
      ALT+A  para agregar a lista
      ALT+S para salvar a lista de itens desejados.

      Assim, quando teclar enter, o sistema não dispara o GRAVAR na Base de Dados.

      Grato,

      Cesar
       
       
       
    • Por violin101
      Caros amigos, saudações.

      Por favor, peço desculpa em recorrer a ajuda dos amigos referente uma dúvida.

      Tenho um Sistema que estou escrevendo em PHP + Codeigniter e a minha dúvida em Codeigniter é:
      Obs.: as tabela são em MySql

      => como faço para IMPORTAR o dado de uma Tabela para outra, as tabela são:
      ___________________Tabela de Pedido     =========== para ==========>    Tabela de Entrada de Lançamentos
      itens: codigoProduto | quantidade | valorUnitario  === importar===> itens: codigoProduto | quantidade | valorUnitario
       
      Estou tentando de várias formas, mas não estou conseguindo.

      Por favor, alguém pode me dar uma ajuda, explicação ou orientação.

      Grato,
       
      Cesar
       
×

Informação importante

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