SoloCodigo

Programación General => Power Builder => Mensaje iniciado por: darksito en Sábado 24 de Octubre de 2009, 16:25

Título: obtener dato de una web
Publicado por: darksito en Sábado 24 de Octubre de 2009, 16:25
hola , amigos de solocodigo se me presento una curiosidad , a decir verdad nunca e intentado hacer algo como esto pero se me vino a la mente hacer que powerbuilder pueda obetener un dato especifico de una pagina web Extamente de esta : Sunat (http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias)

como veran aparecen los tipos de cambios de los cuales se rige mi empresa, ahora quisiera si hay alguna forma de obtener el dato ejemplo que ahora estemos dia 24 en la web hay una columna que dice dia y otra compra y venta  obtener eso dos valores compra y venta del dia tal
se podra realizar con powerbuilder
Título: Re: obtener dato de una web
Publicado por: F_Tanori en Domingo 25 de Octubre de 2009, 15:11
Relativamente Facil si se utiliza un objeto HTTPRequest, como se usa para AJAX

Te pongo un ejemplo sencillo de como leer una pagina con este metodo, por supuesto hay otros metodos... entre ellos insertar un webbrowser de los que recuerdo ahorita...

Código: Visual Basic
  1.  
  2. OleObject HTTPRequest
  3. Long ret,ll_PosicionCadena
  4. Boolean lb_Error
  5. String ls_HTML,ls_URL,ls_Cadena
  6.  
  7.  
  8. HTTPRequest = Create OLEObject
  9. ret = HTTPRequest.ConnectToNewObject( "Msxml2.XMLHTTP" )
  10.  
  11. if ret<0 then
  12.     ret = HTTPRequest.ConnectToNewObject("Microsoft.XMLHTTP" )
  13. end if
  14.  
  15. // Si ocurre un error detenemos la rutina
  16. if ret <0 then
  17.     MessageBox('Error','No ha sido posible crear el objeto')
  18.     return
  19. end if
  20.  
  21. //Llamar Pagina
  22. ls_URL = "http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias"
  23.  
  24. lb_Error=false
  25. HTTPRequest.open("GET",ls_URL,false)
  26. HTTPRequest.send()
  27.  
  28. if HTTPRequest.status=200 then
  29.     ls_HTML = HTTPRequest.responseText
  30.     yield()
  31. else
  32.     ls_HTML ='Sitio No Disponible'
  33.     lb_Error=true
  34. end if
  35.  
  36. //Obtenemos el Codigo de la Pagina HTML
  37. //MessageBox(ls_URL,ls_HTML) <==============================
  38.  
  39. if not lb_Error then
  40.     //Buscar Una Cadena en el Codigo Fuente
  41.     ls_Cadena ='Para efectos del Impuesto'
  42.     ll_PosicionCadena = Pos(ls_HTML,ls_Cadena)
  43.    
  44.     if ll_PosicionCadena >0 then /* Cadena Encontrada */
  45.  
  46.         /* Mostrar la cadena que aparece en el sitio (como Ejemplo):
  47.             =========================================
  48.                         "   Para efectos del Impuesto a la Renta, se deberá tomar el tipo de cambio de cierre, al 31 de Diciembre del ejercicio correspondiente  "
  49.             =========================================
  50.         */ 
  51.             MessageBox('SoloCodigo.com - F_Tanori ','~n'+'SUNAT dice: ~n ~n'+mid(ls_HTML,ll_PosicionCadena,135) +'~n ~n'+ls_URL)
  52.         end if
  53.        
  54. end if
  55.  
  56.  

El ejemplo esta hecho 'continuo' para efectos practicos, pero lo ideal es separarlo ya sea creando una clase para esta tarea o en funciones, la busqueda es solo una pista, tambien puedes usar expresiones regulares, bueno eso ya corre por tu cuenta

Saludos
Título: Re: obtener dato de una web
Publicado por: darksito en Domingo 25 de Octubre de 2009, 15:24
gracias por tu pasciencia man eres un +10 :)
Título: Re: obtener dato de una web
Publicado por: F_Tanori en Miércoles 28 de Octubre de 2009, 18:00
^_^
Título: Re: obtener dato de una web
Publicado por: dany22_ en Sábado 3 de Mayo de 2014, 19:00
Relativamente Facil si se utiliza un objeto HTTPRequest, como se usa para AJAX

Te pongo un ejemplo sencillo de como leer una pagina con este metodo, por supuesto hay otros metodos... entre ellos insertar un webbrowser de los que recuerdo ahorita...

Código: Visual Basic
  1.  
  2. OleObject HTTPRequest
  3. Long ret,ll_PosicionCadena
  4. Boolean lb_Error
  5. String ls_HTML,ls_URL,ls_Cadena
  6.  
  7.  
  8. HTTPRequest = Create OLEObject
  9. ret = HTTPRequest.ConnectToNewObject( "Msxml2.XMLHTTP" )
  10.  
  11. if ret<0 then
  12.     ret = HTTPRequest.ConnectToNewObject("Microsoft.XMLHTTP" )
  13. end if
  14.  
  15. // Si ocurre un error detenemos la rutina
  16. if ret <0 then
  17.     MessageBox('Error','No ha sido posible crear el objeto')
  18.    return
  19. end if
  20.  
  21. //Llamar Pagina
  22. ls_URL = "http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias"
  23.  
  24. lb_Error=false
  25. HTTPRequest.open("GET",ls_URL,false)
  26. HTTPRequest.send()
  27.  
  28. if HTTPRequest.status=200 then
  29.     ls_HTML = HTTPRequest.responseText
  30.     yield()
  31. else
  32.     ls_HTML ='Sitio No Disponible'
  33.    lb_Error=true
  34. end if
  35.  
  36. //Obtenemos el Codigo de la Pagina HTML
  37. //MessageBox(ls_URL,ls_HTML) <==============================
  38.  
  39. if not lb_Error then
  40.     //Buscar Una Cadena en el Codigo Fuente
  41.     ls_Cadena ='Para efectos del Impuesto'
  42.    ll_PosicionCadena = Pos(ls_HTML,ls_Cadena)
  43.    
  44.     if ll_PosicionCadena >0 then /* Cadena Encontrada */
  45.  
  46.         /* Mostrar la cadena que aparece en el sitio (como Ejemplo):
  47.             =========================================
  48.                         "   Para efectos del Impuesto a la Renta, se deberá tomar el tipo de cambio de cierre, al 31 de Diciembre del ejercicio correspondiente  "
  49.             =========================================
  50.         */  
  51.             MessageBox('SoloCodigo.com - F_Tanori ','~n'+'SUNAT dice: ~n ~n'+mid(ls_HTML,ll_PosicionCadena,135) +'~n ~n'+ls_URL)
  52.        end if
  53.        
  54. end if
  55.  
  56.  

El ejemplo esta hecho 'continuo' para efectos practicos, pero lo ideal es separarlo ya sea creando una clase para esta tarea o en funciones, la busqueda es solo una pista, tambien puedes usar expresiones regulares, bueno eso ya corre por tu cuenta

Saludos




Hola que tal como estas quisera pedirte porfavor si me podrias ayudar con un codigo asi para obtener el tipo de cambio de sunat  visual basic 6