Consulta a un servicio remoto, enviando y recibiendo datos, simulando una forma

PHP
Muchas veces necesitamos interactuar con sistemas externas. Y no todos los sistemas disponen un Web Services. En este tópico como ejemplo, ueden ver interacción con el sitio de SRI.


Como parámetro de entrada servicio va a recibir número del RUC, y consultando a página web del SRI, retorna el nombre. Además nuestro script, hace la simulación de varios clientes, para que la gente del SRI, no nos bloquea =)

El cliente, esta realizado en famosa librería CURL.


<?php

 //Numero del ruc, cual desea consultar
 $ruc = '1790368718001';

 //Parámetros de entrada
 define('POSTVARS', 'pagina=resultado&opcion=1&texto='. $ruc );

 $user_agent    = array();  
 $user_agent[0] =
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM)";
 $user_agent[1] =
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Avant Browser [avantbrowser.com]; Hotbar 4.4.5.0)";
 $user_agent[2] =
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.14) Gecko/20080409 Camino/1.6 (like Firefox/2.0.0.14)";
 $user_agent[3] =
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13";
 $user_agent[4] =
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; NeosBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
 $user_agent[4] =
"Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1) Gecko/20061010 Firefox/2.0";

 $rnd = rand(0, count($user_agent)-1);
 $agent = $user_agent[$rnd];
 
 //URL de servicio SRI para consultar

 $ch = curl_init("https://declaraciones.sri.gov.ec/facturacion-internet/consultas/publico/ruc-datos1.jspa");
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
 
 curl_setopt($ch, CURLOPT_POSTFIELDS    , POSTVARS);
 curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
 curl_setopt($ch, CURLOPT_HEADER      ,0);  
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);
 
 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Si tiene salida a Internet por Proxy, debe poner ip y puerto
//curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
//curl_setopt($ch, CURLOPT_PROXY, '192.168.0.1:3128');

//curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');

 
 $Rec_Data = curl_exec($ch);
 
 $startString  = '<td style="text-align:center;">';
 $endString    = '</td>';
 
 $startTable  = stripos($Rec_Data,'<table class="reporte" cellspacing="0">');
 $startColumn = stripos($Rec_Data, $startString, $startTable)+ strlen($startString);
 $endColumn   = stripos($Rec_Data, $endString, $startColumn);
 
 echo substr($Rec_Data, $startColumn, $endColumn-$startColumn);  
 curl_close($ch);


?>
 
  • 0
  • 0
  • Compartir en Facebook

1 comentario

Para escribir comentarios debes registrarte.