Consulta a un servicio remoto, enviando y recibiendo datos, simulando una forma
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);
?>
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);
?>
1 comentario