Web Services

Post Reply
User avatar
ralph
Posts: 63
Joined: Fri Nov 18, 2005 11:15 pm
Location: Lima - PERU

Web Services

Post by ralph »

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/viewt ... ad#p151734
3. Extraigo la informacion que necesito de ese archivo.

Aqui esta el codigo.

Code: Select all

 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 17.09, xHb123_10193, MySQL 5.5, BCC 7.3
MGA
Posts: 1219
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Re: Web Services

Post by MGA »

muito obrigado Ralph.
ubiratanmga@gmail.com

FWH17.04
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Web Services

Post by Antonio Linares »

Ralph,

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

Antonio Linares
www.fivetechsoft.com
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Re: Web Services

Post by csincuir »

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

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.
Enrrique Vertiz
Posts: 440
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Contact:

Re: Web Services

Post by Enrrique Vertiz »

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, Fwh 20.04, MySQL 5.7 - 8.0, SQLLIB 1.9m, SQLRDD
yampichu
Posts: 3
Joined: Sat May 23, 2015 5:43 pm

Re: Web Services

Post by yampichu »

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
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Web Services

Post by carlos vargas »

Code: Select all

#include "dll.ch"
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Web Services

Post by jnavas »

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/viewt ... ad#p151734
3. Extraigo la informacion que necesito de ese archivo.

Aqui esta el codigo.

Code: Select all

 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: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Web Services

Post by jnavas »

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
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Re: Web Services

Post by lubin »

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
kerly
Posts: 1
Joined: Fri Jul 31, 2020 8:28 pm

Re: Web Services

Post by kerly »

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
cjcardoza
Posts: 19
Joined: Thu Jul 13, 2006 12:20 am
Location: Lima - Peru

Re: Web Services

Post by cjcardoza »

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.
Post Reply