Leer página web desde FWH

Leer página web desde FWH

Postby alvaro533 » Thu Feb 02, 2012 10:52 pm

Buenas tardes

Estoy intentado leer una página web desde mi programa. La página es

http://aviationweather.gov/adds/metars/index.php?submit=1&station_ids=LEAL&chk_metars=on&chk_tafs=on&hoursStr=3

El siguente código me funciona perfectamente con páginas que no son php.

Code: Select all  Expand view

// -------------------------------------------------------------------------- //
function leeADDS()
local site
local cad:=""
local out
local oWebClient
local oTimer,oDlg
local cPagename


site := "aviationweather.gov"
cPagename:= "/adds/metars/index.php?submit=1&station_ids=LEAL&chk_metars=on&chk_tafs=on&hoursStr=3"

    oWebClient := TWebClient():New()
    oWebClient:Connect( site )


DEFINE TIMER otimer INTERVAL 1000 ACTION if(comprueba(cad) , oDlg:end() , nil) OF app():ownd
ACTIVATE TIMER otimer

DEFINE DIALOG oDlg FROM 3, 3 TO 28, 79 title "Espera "+cPageName

//    oWebClient:bOnConnect = { || MsgInfo( "Connected!" ) }
//    oWebClient:bOnRead    = { | cData | cad += cData     }
    oWebClient:bOnRead    = { | cData |  cad += cData    }
    oWebClient:oSocket:SendData( "GET " + cPageName + " HTTP/1.0" + CRLF +"Host: "+site+ CRLF +CRLF )


activate dialog oDlg centered

out:= fcreate("meteo.txt",0)
fwrite(out,cad+CRLF)
fclose(out)

RELEASE TIMER otimer

return nil

// ---------------------------------------------------------------------------- //
static function comprueba(cad)
local bien:= .t.


if !cad="HTTP/1.1 200 OK"
bien:= .f.
endif


if !("</html>"$cad)
bien:= .f.
endif

return bien
 


Pero como ésta es php me da un error. No he encontrado nada en el foro al respecto. ¿Alguien me puede echar una mano?

Muchas gracias y un saludo,

Alvaro
alvaro533
 
Posts: 206
Joined: Sat Apr 19, 2008 10:28 pm
Location: Madrid, España

Re: Leer página web desde FWH

Postby Daniel Garcia-Gil » Fri Feb 03, 2012 12:18 am

Alvaro

aqui tienes un ejemplo funcional usando Harbour

descarga el ejemplo desde aqui: http://www.sitasoft.net/fivewin/samples/req.zip

Code: Select all  Expand view

#include "fivewin.ch"

#define SET_HOST "aviationweather.gov"
#define SET_REQUEST "GET [URL] HTTP/1.1" + CRLF + ;
                   "Host: [HOST]" + CRLF + ;
                   'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7' + CRLF +;
                   'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + CRLF +;
                   'Accept-Language: en-us,en;q=0.5' + CRLF +;
                   'Accept-Encoding: deflate' + CRLF +;
                   'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' + CRLF +;
                   "Connection: Close" + CRLF + CRLF



function main()

? GetDatas()

return nil

FUNCTION GetDatas()
   LOCAL cRequest
   LOCAL cResponse
   LOCAL cBuffer
   LOCAL pSocket
   LOCAL nBytes
   LOCAL nPos, i
   LOCAL cStr
   LOCAL crlf := chr(13)+chr(10)
   LOCAL nMaxBuff := 1024
   LOCAL aResponse := {}
   LOCAL cUrl
                     
   HB_INetInit()

   cUrl    := "/adds/metars/index.php?submit=1&station_ids=LEAL&chk_metars=on&chk_tafs=on&hoursStr=3"
   
   pSocket := HB_INetConnect( SET_HOST, 80 )

   IF HB_INetErrorCode( pSocket ) <> 0
      RETURN NIL
   ELSE
      cRequest  := strTran( SET_REQUEST, "[URL]", cUrl )
      cRequest  := strTran( cRequest, "[HOST]", SET_HOST )                  
      nBytes    := HB_INetSend( pSocket, cRequest )
      cBuffer   := SPACE(nMaxBuff)
      cResponse := ""

      DO WHILE nBytes > 0
         nBytes    := HB_INetRecv( pSocket, @cBuffer )
         cResponse += LEFT( cBuffer, nBytes )
         cBuffer   := SPACE(nMaxBuff)
      ENDDO

   ENDIF
   HB_INetClose( pSocket )
   HB_INetCleanUp()
   
   
RETURN cResponse
 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Leer página web desde FWH

Postby alvaro533 » Fri Feb 03, 2012 12:28 am

Funciona a la perfección. Muchas gracias Daniel.
Un saludo desde Madrid.

Alvaro
alvaro533
 
Posts: 206
Joined: Sat Apr 19, 2008 10:28 pm
Location: Madrid, España

Re: Leer página web desde FWH

Postby Xevi » Wed Sep 09, 2020 9:01 am

Os sigue funcionando???

Lo he probado y a mi no me funciona.
Si leo lo que me devuelve...

Code: Select all  Expand view
HTTP/1.1 301 Moved Permanently
Server: AkamaiGHost
Content-Length: 0
Location: https://aviationweather.gov/adds/metars/index.php?submit=1&station_ids=LEAL&chk_metars=on&chk_tafs=on&hoursStr=3
Date: Wed, 09 Sep 2020 08:56:06 GMT
Connection: close


Gracias
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Leer página web desde FWH

Postby karinha » Wed Sep 09, 2020 2:11 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7813
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Leer página web desde FWH

Postby Xevi » Wed Sep 09, 2020 9:09 pm

karinha

No entiendo tu respuesta... si voy a esa dirección SI que veo que está funcionando, pero lo que intento es "leer o capturar" los datos que retorna esa página "https://aviationweather.gov/adds/metars/index.php?submit=1&station_ids=LEAL&chk_metars=on&chk_tafs=on&hoursStr=3", tal cual se detalla en el sample.
Pero veo que ahora no está funcionando.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 29 guests