Web Services
Posted: 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/viewt ... ad#p151734
3. Extraigo la informacion que necesito de ese archivo.
Aqui esta el codigo.
Espero les sea de utilidad
Si alguien tiene alguna mejor forma de hacerlo, que lo comparta.
Saludos
Ralph
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
Si alguien tiene alguna mejor forma de hacerlo, que lo comparta.
Saludos
Ralph