Web Services

Web Services

Postby ralph » Thu Jan 09, 2014 4:33 am

Amigos del foro:
Hace poco tuve necesidad de hacer uso de los web services, estuve investigando un poco en el foro y hay alguna informacion dispersa.
Les paso un ejemplo que me funciona y espero les sea util y puedan complementarlo con sus aportes.
Esta es la secuencia:
1. Ejecuto un web service que me devuelve un XML
Para el ejemplo uso este web service que me devuelve informacion de un RUC (Peru)
http://www.sunat.gob.pe/w/wapS01Alias?ruc=20102295961
2. Guardo el XML en un archivo texto, para esto uso una funcion que alguien compartió en otro topico
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=27290&p=151734&hilit=URLDownLoad#p151734
3. Extraigo la informacion que necesito de ese archivo.

Aqui esta el codigo.
Code: Select all  Expand view

 Function BuscaInfoRUC(cRuc)
 local r, i, s, cUrl := "http://www.sunat.gob.pe/w/wapS01Alias?ruc="+cRuc
 local cF := "test.txt", nPos
 local cN, cD, xL := ''
 if empty(cRuc)
    MsgStop("no ha ingresado RUC valido para consultar","Error")
 else
    URLDownLoad(cUrl, cF)
    if file(cF)
       r:=MemoRead(cF)
       if at('El numero Ruc ingresado es invalido',r) > 0
          Msgwait("El numero Ruc ingresado es invalido o no existe",,1)
       else
          Do while .t.
              i:=At( CRLF, r )
              If i=0
                  exit
              Endif
              s:=Left( r, i-1)

              r:=Subs( r, i+2)
              If (nP := at('Número Ruc.', s ) ) > 0
                  cN := substr(s, nP+16)
                  If (nP := at(trim(cRuc), cN ) ) > 0
                     cN := substr(cN, nP+14)
                     cN := strtran(cN,"<br/>","")
                     cN := strtran(cN,"</small>","")
                  endif
                  MsgInfo(cN)  // muestro la informacion que me interesa
                  exit
              Endif
          Enddo
       endif
    endif
 endif
 return nil


function URLDownLoad(cUrl, cSaveAs)
hLib = LOADLIBRARY( "urlmon.dll")
if !URLDownloadToFile( 0, cUrl, cSaveAs, 0, 0 ) == 0
   retu.f.
endif
FREELIBRARY( hLib )
retu.t.

DLL32 FUNCTION URLDownloadToFile(pCaller AS LONG,szURL AS STRING, szFileName AS STRING, dwReserved AS LONG, lpfnCB AS LONG);
AS LONG PASCAL;
FROM "URLDownloadToFileA";
LIB hlib
 


Espero les sea de utilidad
Si alguien tiene alguna mejor forma de hacerlo, que lo comparta.

Saludos

Ralph
Ralph del Castillo
Lima PERU
Fwh 23.04, xHb123_10193, MySQL 5.5, BCC 7.3
User avatar
ralph
 
Posts: 70
Joined: Fri Nov 18, 2005 11:15 pm
Location: Lima - PERU

Re: Web Services

Postby MGA » Thu Jan 09, 2014 10:33 am

muito obrigado Ralph.
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Re: Web Services

Postby Antonio Linares » Thu Jan 09, 2014 6:11 pm

Ralph,

Muchas gracias por compartirlo con todos nosotros :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41313
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Web Services

Postby csincuir » Fri Jan 10, 2014 11:32 am

Muchas gracias Ralph, no conocia esta dll.

Solo hice un pequeño cambio en tus funciones, para no utilizar el LoadLibrary(), y el FreeLibrary():
Code: Select all  Expand view

function URLDownLoad(cUrl, cSaveAs)
//hLib = LOADLIBRARY( "urlmon.dll")
if !URLDownloadToFile( 0, cUrl, cSaveAs, 0, 0 ) == 0
   retu.f.
endif
//FREELIBRARY( hLib )
retu.t.

DLL32 FUNCTION URLDownloadToFile(pCaller AS LONG,szURL AS STRING, szFileName AS STRING, dwReserved AS LONG, lpfnCB AS LONG);
AS LONG PASCAL;
FROM "URLDownloadToFileA";
LIB "urlmon.dll"
//hlib
 


Saludos cordiales.

Carlos.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Web Services

Postby Enrrique Vertiz » Tue Jan 21, 2014 4:51 pm

Ralph, gracias por tu aporte, para solucionar el problema del retorno de letras con tilde o eñe podemos añadir estos reemplazos :

cN := STRTRAN(cN,"&#209;", "Ñ")
cN := STRTRAN(cN,"&#xD1;", "Ñ")
cN := STRTRAN(cN,"&#193;", "Á")
cN := STRTRAN(cN,"&#201;", "É")
cN := STRTRAN(cN,"&#205;", "Í")
cN := STRTRAN(cN,"&#211;", "Ó")
cN := STRTRAN(cN,"&#218;", "Ú")
cN := STRTRAN(cN,"&#xC1;", "Á")
cN := STRTRAN(cN,"&#xC9;", "É")
cN := STRTRAN(cN,"&#xCD;", "Í")
cN := STRTRAN(cN,"&#xD3;", "Ó")
cN := STRTRAN(cN,"&#xDA;", "Ú")
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 23.04, MySQL 8.0.X, SQLLIB 1.9m, SQLRDD
Enrrique Vertiz
 
Posts: 514
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: Web Services

Postby yampichu » Mon May 25, 2015 9:52 pm

Que librerias adicional has utilizado, ya que cuando trato de usarlo me vota un error, "Synstax error at FUNCTION"

Haber si me puedieran apoyar en esto
yampichu
 
Posts: 3
Joined: Sat May 23, 2015 5:43 pm

Re: Web Services

Postby carlos vargas » Tue May 26, 2015 1:37 am

Code: Select all  Expand view
#include "dll.ch"
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Web Services

Postby jnavas » Wed Jun 03, 2015 9:41 pm

ralph wrote:Amigos del foro:
Hace poco tuve necesidad de hacer uso de los web services, estuve investigando un poco en el foro y hay alguna informacion dispersa.
Les paso un ejemplo que me funciona y espero les sea util y puedan complementarlo con sus aportes.
Esta es la secuencia:
1. Ejecuto un web service que me devuelve un XML
Para el ejemplo uso este web service que me devuelve informacion de un RUC (Peru)
http://www.sunat.gob.pe/w/wapS01Alias?ruc=20102295961
2. Guardo el XML en un archivo texto, para esto uso una funcion que alguien compartió en otro topico
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=27290&p=151734&hilit=URLDownLoad#p151734
3. Extraigo la informacion que necesito de ese archivo.

Aqui esta el codigo.
Code: Select all  Expand view

 Function BuscaInfoRUC(cRuc)
 local r, i, s, cUrl := "http://www.sunat.gob.pe/w/wapS01Alias?ruc="+cRuc
 local cF := "test.txt", nPos
 local cN, cD, xL := ''
 if empty(cRuc)
    MsgStop("no ha ingresado RUC valido para consultar","Error")
 else
    URLDownLoad(cUrl, cF)
    if file(cF)
       r:=MemoRead(cF)
       if at('El numero Ruc ingresado es invalido',r) > 0
          Msgwait("El numero Ruc ingresado es invalido o no existe",,1)
       else
          Do while .t.
              i:=At( CRLF, r )
              If i=0
                  exit
              Endif
              s:=Left( r, i-1)

              r:=Subs( r, i+2)
              If (nP := at('N&#xFA;mero Ruc.', s ) ) > 0
                  cN := substr(s, nP+16)
                  If (nP := at(trim(cRuc), cN ) ) > 0
                     cN := substr(cN, nP+14)
                     cN := strtran(cN,"<br/>","")
                     cN := strtran(cN,"</small>","")
                  endif
                  MsgInfo(cN)  // muestro la informacion que me interesa
                  exit
              Endif
          Enddo
       endif
    endif
 endif
 return nil


function URLDownLoad(cUrl, cSaveAs)
hLib = LOADLIBRARY( "urlmon.dll")
if !URLDownloadToFile( 0, cUrl, cSaveAs, 0, 0 ) == 0
   retu.f.
endif
FREELIBRARY( hLib )
retu.t.

DLL32 FUNCTION URLDownloadToFile(pCaller AS LONG,szURL AS STRING, szFileName AS STRING, dwReserved AS LONG, lpfnCB AS LONG);
AS LONG PASCAL;
FROM "URLDownloadToFileA";
LIB hlib
 


Espero les sea de utilidad
Si alguien tiene alguna mejor forma de hacerlo, que lo comparta.

Saludos

Ralph


Ralph,
Puedes enviarme la DLL a mi correo jnavas@datapronet.com
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Web Services

Postby jnavas » Thu Jun 04, 2015 9:41 am

Saludos
Esta funcionalidad la tiene harbour, la implemente hace mas de 7 años , no recuerdo en nombre de la función, la estoy buscando en mis aplicaciones.
User avatar
jnavas
 
Posts: 472
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Web Services

Postby lubin » Tue Jun 19, 2018 5:08 pm

Buen dia Ralph

Estuve tratando de activar la funcion para consultar el RUC pero no me devuelve nada la funcion,
quizas cambio en algo la direccion de la web o algo parecido

Gracias
Lubin
User avatar
lubin
 
Posts: 439
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Web Services

Postby kerly » Fri Aug 14, 2020 10:03 pm

Buenos días amigos también he probado el ejemplo pero no devuelve nada ni siquiera crea el archivo test.txt copie la dll urlmon.dll a mi libreria pero no hace nada no se si falta alguna otra instrucción he puesto también el dll.ch si a alguien le ha funcionado por favor si nos puede orientar muchas gracias
kerly
 
Posts: 1
Joined: Fri Jul 31, 2020 8:28 pm

Re: Web Services

Postby cjcardoza » Fri Aug 21, 2020 5:14 pm

Este webservice ya esta descontinuado hace varios años creo desde el 2017, ahora funciona con un captcha y se requiere un ejecutable adicional para el reconocimiento del mismo.
cjcardoza
 
Posts: 31
Joined: Thu Jul 13, 2006 12:20 am
Location: Lima - Peru

Re: Web Services

Postby Educuzco » Tue May 18, 2021 11:46 pm

Buen Dia a todos
efectivamente este año la sunat cambio la forma de consulta ruc en web services
ahora utiliza token si alguien tiene desarrollado la consulta se agradeceria que lo comparta
esta es la nueva url http://e-consultaruc.sunat.gob.pe/cl-ti ... crS00Alias
Gracias de antemano
Saludos
Educuzco
Educuzco
 
Posts: 1
Joined: Tue May 18, 2021 12:33 am

Re: Web Services

Postby Dioni » Sat May 22, 2021 6:13 am

Hola amigos de PERU....

Pueden utilizar esta funcion para conectarse a sunat y reniec y extraer datos para facturacion electronica
yo lo utilizo ya hace dos años.

el link es : https://www.apisperu.com/servicios/dniruc/
te registras y te dan tu token para ingresar.


doc = CreateObject("MSXML2.DOMDocument")
ohttp = CreateObject( "MSXML2.XMLHTTP" )
do case
case len(xnruc)=11
ohttp:Open( "GET" ,"https://dniruc.apisperu.com/api/v1/ruc/&xnruc",.F.)
case len(xnruc)=8
ohttp:Open( "GET" ,"https://dniruc.apisperu.com/api/v1/dni/&xnruc",.F.)
Othe
msginfo("Error Ingreso","Intente Nuevamente")
Retu nil
Endc
&:='jdjddjjd.dcd..c.d.cd..cdcd.d.c.d.cd.cd.c.dc.d.cd.d.dc.dc.d.cd.cd.c.dc.d.cd.c.d' // remplazar valor de token que te enviaran por correo y listo ...
oHttp:SetRequestHeader("cache-control", "no-cache")
ohttp:SetRequestHeader("content-type", "application/json" )
ohttp:SetRequestHeader("Authorization", "Bearer &token" )
TRY
ohttp:Send('&xnruc')
CATCH
msginfo("No Se Pudo Enviar Documento JSON","Intente Nuevamente")
return .t.
END
response:=ohttp:responseText
?response // repuesta con los datos de sunat o reniec
Dioni
 
Posts: 36
Joined: Tue May 12, 2009 8:45 pm
Location: Lima - Perú

Re: Web Services

Postby artu01 » Sat May 22, 2021 6:07 pm

Gracias Dioni
funciona perfecto!, solo que permite 2000 consultas al mes porque es un servicio gratuito pero haz intentado hacerlo directamente con el ws de Sunat?
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 15 guests