Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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); 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$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 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á, obrigadaJa testei, no suapUi funciona como esperado
$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 ); 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 132Opz[ 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
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?
Faça primeiro um teste utilizando o SoapUI, veja se tudo ocorre conforme o esperado.