N sé si es esto exactamente lo que necesitas pero te pongo un código ( sin terminar ) que he realizado .
Lo que hace es llamar a una dirección de yahoo weather donde le pasa unos parámetros , entre ellos la ciudad o el formato de respuesta ( xml o Json )
recogemos la respuesta y podemos grabarla o no según nos guste. Esa respuesta se puede tratar para extraerle los datos . En el ejemplo recoge un son y lo trato para sacar los datos que me interesan y los muestro en un msginfo ...
Espero sea lo que buscas.
- Code: Select all Expand view RUN
// Our first DialogBox sample
#include "FiveWin.ch"
function Main()
local oDlg, oIco ,cCity:= space(30)
DEFINE ICON oIco FILE "..\icons\fivewin.ico"
DEFINE DIALOG oDlg TITLE "Ciudad a buscar" COLOR "W+/B" ;
ICON oIco
@ 1, 3 GET cCity
@ 3, 5 BUTTON "&Ok" SIZE 40, 12 ;
ACTION llamada(cCity)
@ 3, 16 BUTTON "&Cancel" SIZE 40, 12 ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED ;
VALID MsgYesNo( "Do you want to end ?" )
return nil
procedure AppSys // XBase++ requirement
return
Function llamada(cCity)
local oHttp
local cResp
local cDir
local Formato := "json" // "xml"
cDir := "https://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid in (select woeid from geo.places(1)"
cDir:= cDir + " where text= '"+ cCity +"' )&format=" + Formato
Try
oHttp := CreateObject("winhttp.winhttprequest.5.1")
oHttp:Open("GET", cDir, .f. )
oHttp:Send()
cResp := oHttp:ResponseText()
memowrit("eltiempo.txt",cResp )
// msginfo("grabado")
// winexec( "notepad.exe eltiempo.txt" )
leejson( cResp )
Catch
MsgStop( "Error" )
Return cResp
End Try
Return nil
function Leejson(cResp )
local hvar
local hvar1,hvar2
local cTexto:=""
//msginfo(cResp )
hb_jsondecode(cResp,@hvar )
cTexto := "Fecha : "+ hvar["query"]["created"]+CRLF
hvar1:= hvar["query"]["results"]["channel"]
cTexto:= cTexto+ hvar1["title"] + CRLF
cTexto:= cTexto + "Viento" + CRLF
hvar2:= hvar1["wind"]
cTexto:= cTexto + "Chill "+ hVar2["chill"] + CRLF
cTexto:= cTexto + "Direcccion "+ hVar2["direction"] + CRLF
cTexto:= cTexto + "Velocidad "+ hVar2["speed"]+ hvar1["units"]["speed"] + CRLF
/*
asi se puede seguir despiezando el json
*/
msginfo( cTexto,"Titulo" )
return nil