Search  
Wednesday, May 23, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Visual FoxPro in general  Citire istoric ...
 Citire istoric curs valutar de pe site-ul BNR
 
 6/29/2011 2:16:39 PM
User is offlineclivius33
68 posts


Citire istoric curs valutar de pe site-ul BNR
 (N/A)
Buna ziua.
Incerc de mai mult timp sa aduc programatic, de pe site-ul: http://www.bnr.ro/Cursul-de-schimb-524.aspx, istoricul cursului valutar pe un anumit an (de ex. 2011), in format XML. 
As dori sa utilizez metoda cu obiectul : ohttp = createobject("winhttp.winhttprequest.5.1"). Problema este ca pe site-ul acela, click-ul pe eticheta XML lanseaza din cate imi dau eu seama un script java si nu e un simplu link de navigare pe alta pagina. Are cineva idee cum s-ar putea face acest lucru cu winhttp ?
Cu multumiri,
Liviu.
 6/29/2011 2:40:21 PM
User is offlineDoru Constantin
321 posts
3rd




Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A) Modified By Doru Constantin  on 6/29/2011 2:48:31 PM)
S-a mai discutat [edit] aici: http://www.profox.ro/Forum/tabid/55/forumid/5/threadid/27096/scope/posts/Default.aspx [/edit]

Adresele sunt (de exemplu):

pentru ziua curenta = http://www.bnro.ro/nbrfxrates.xml
o data la alegere = http://www.bnr.ro/MakeXmlFile.aspx?date=28.06.2011
un an la alegere = http://www.bnr.ro/MakeXmlFile.aspx?year=2011

Restul depinde de cum tine cum "parse-uesti" xml-ul rezultat.

 6/29/2011 3:05:54 PM
User is offlineclivius33
68 posts


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
Multumesc pt. raspuns.
Varianta pentru ziua curenta este clara si exact asa fac si eu. Probleme apar insa la istorice.
Varianta cu o anumita data mi s-a parut instabila (in sensul ca imi dadea cateodata eroare) si pana la urma am ales  sa merg pe infovalutar.ro.
Varianta cu anul la alegere (http://www.bnr.ro/MakeXmlFile.aspx?year=2011), pentru anul curent nu functiona perfect, cateodata imi aducea doar cateva zile. Am incercat si cu winhttp si cu URLDownloadToFile si la fel facea. In final, dupa ce am muncit o gramada la chestia asta (am facut si parsarea si tot), am renuntat. Mai mult, le-am trimis si un mail celor de la BNR in care le-am vorbit despre posibilitatea de a aduce istoricul cursului si metoda cu: http://www.bnr.ro/MakeXmlFile.aspx?year=2011si mi-au raspuns sa nu ma bazez pe posibilitatea asta ca ei n-o garanteaza, dar nici nu s-au oferit sa faca ceva mai mult pentru aducerea programatica a istoricului.
Din cauza asta, desi a trecut ceva timp de cand am "dat luptele astea", am zis ca poate cineva a gasit vreo alta metoda.
 6/30/2011 12:09:00 AM
User is offlineDumitru
172 posts
5th


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
Daca-i vorba de istorie, download-ezi manual pe N ani in urma si de aici folosesti una din metode pentru a tine pasul zilnic sau la o saptamana (depinde cum ai nevoie)
 6/30/2011 7:41:03 AM
User is offlineclivius33
68 posts


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
 Dumitru Echim wrote
Daca-i vorba de istorie, download-ezi manual pe N ani in urma si de aici folosesti una din metode pentru a tine pasul zilnic sau la o saptamana (depinde cum ai nevoie)


Treaba cu descarcatul manual ar merge doar pentru anii trecuti, dar cazul cel mai des intalnit in practica este cel cu istoricul anului curent. De ex. clientul nu si-a mai actualizat de cateva zile (sau saptamani sau luni) cursul valutar si ar vrea sa-l aduca pentru acest interval. O varianta ar fi sa-i aduc pe rand fiecare zi din interval de pe infovalutar.ro, dar macar atata bun simt sa am si eu sa nu creez pe-acolo un trafic infernal.
Varianta manuala ar presupune sa am grija ca zi de zi sa descarc manual XML-ul cu istoricul anului curent si sa-l postez apoi pe un site de unde sa-l descarce apoi clientul si sa-i 'decupez' intervalul dorit. Dar nu ar fi deloc elegant nu ? Si de-altfel foarte obositor. Deci tot ceva automat ar fi de dorit.
 7/1/2011 2:41:18 AM
User is offlineDumitru
172 posts
5th


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
Asa cum ai zis pare bine, cu o modificare, de ce trebuie sa-l descarci manual si sa-l pui pe alt site? Sa-l descarce site-ul o singura data si ceilalti sa-l ia de acolo (ca sa nu faci trafic la infovalutar).
N-am incercat pentru ca n-am avut nevoie dar cred ca ma descurc in PHP sa fac asta. Cred ca se gasesc si scripturi free. Printre primele aduse de google: http://www.marplo.net/php-mysql/curs_valutar-s.php, trebuie un pic adaptat sa salveze rezultatul in DB, asa ar fi mai usor sa-l oferi clientilor tai.

 7/1/2011 9:45:04 AM
User is offlineclivius33
68 posts


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
 Dumitru Echim wrote
Asa cum ai zis pare bine, cu o modificare, de ce trebuie sa-l descarci manual si sa-l pui pe alt site? Sa-l descarce site-ul o singura data si ceilalti sa-l ia de acolo (ca sa nu faci trafic la infovalutar).
N-am incercat pentru ca n-am avut nevoie dar cred ca ma descurc in PHP sa fac asta. Cred ca se gasesc si scripturi free. Printre primele aduse de google: http://www.marplo.net/php-mysql/curs_valutar-s.php, trebuie un pic adaptat sa salveze rezultatul in DB, asa ar fi mai usor sa-l oferi clientilor tai.



Nu ma pricep la PHP dar inteleg ca s-ar putea face un script PHP care sa aduca istoricul anului curent (sau ce an aleg de-acolo) in format XML. Daca e asa, imi trebuie deci pe langa scriptul respectiv si un site care sa suporte PHP, nu ? Apoi de pe site-ul acesta descarc programatic (cu winttp) direct fisierul XML. Suna bine, cunosc pe cineva care stie PHP si am sa-i cer o parere. Link-ul de mai sus se refera la cursul zilnic deci nu e ceea ce caut. Multumesc mult.
 7/1/2011 12:57:54 PM
User is offlineDaniel Buduru
2332 posts
1st




Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
ohttp=CREATEOBJECT('winhttp.winhttprequest.5.1')

lnYear=2011
ohttp.Open('get','http://www.bnr.ro/MakeXmlFile.aspx?year='+TRANSFORM(lnYear),.f.)
ohttp.SetRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
ohttp.SetRequestHeader('Accept-Encoding','gzip, deflate')
ohttp.Send
STRTOFILE(ohttp.ResponseText,'curs_bnr_'+TRANSFORM(lnYear)+'.xml')


ldDate=DATE(2010,5,30)
lcDate=TRANSFORM(DTOS(ldDate),'@R 9999-99-99')
ohttp.Open('get','http://www.bnr.ro/MakeXmlFile.aspx?date='+lcDate,.f.)
ohttp.SetRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
ohttp.SetRequestHeader('Accept-Encoding','gzip, deflate')
ohttp.Send
STRTOFILE(ohttp.ResponseText,'curs_bnr_'+lcDate+'.xml')

Daca nu exista curs pentru data ceruta, returneaza chr(31)+chr(139)

Daniel Buduru
 7/1/2011 3:23:31 PM
User is offlineclivius33
68 posts


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
 Daniel Buduru wrote
ohttp=CREATEOBJECT('winhttp.winhttprequest.5.1')

lnYear=2011
ohttp.Open('get','http://www.bnr.ro/MakeXmlFile.aspx?year='+TRANSFORM(lnYear),.f.)
ohttp.SetRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
ohttp.SetRequestHeader('Accept-Encoding','gzip, deflate')
ohttp.Send
STRTOFILE(ohttp.ResponseText,'curs_bnr_'+TRANSFORM(lnYear)+'.xml')


Multumesc mult pentru codul postat.
Din pacate se intampla tot ceea ce stiam, adica, am rulat chiar acum (ora 15:14) codul de mai sus si din tot anul 2011 mi-a adus doar cinci zile din ianuarie (2,3,4,6 si 7). Am sperat ca setarile alea de head-ere (care pentru mine sunt complet necunoscute) sa faca diferenta fata de incercarile mele, dar din pacate tot nu merge. Probabil ca sunt si momente cand aduce cum trebuie, nu stiu ce ce intampla.
Cu stima,
Liviu
 7/1/2011 4:18:53 PM
User is offlineDaniel Buduru
2332 posts
1st




Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
In acest caz, adauga si acest header, inainte de send:
ohttp.SetRequestHeader('Connection','keep-alive')


Daniel Buduru
 7/1/2011 4:24:24 PM
User is offlineclivius33
68 posts


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
 Daniel Buduru wrote
In acest caz, adauga si acest header, inainte de send:
ohttp.SetRequestHeader('Connection','keep-alive')



Din pacate face la fel si dupa adaugarea acestui header (aduce doar 5 zile din ianuarie).
 7/1/2011 4:27:34 PM
User is offlineDaniel Buduru
2332 posts
1st




Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
Mda. Asa pare sa functioneze tot timpul:

ohttp=CREATEOBJECT('winhttp.winhttprequest.5.1')
ohttp.Open('get','http://www.bnr.ro/Cursul-de-schimb-524.aspx',.f.)
ohttp.send()
lcCookie=ohttp.GetResponseHeader('Set-Cookie')

lnYear=2011
ohttp.Open('get','http://www.bnr.ro/MakeXmlFile.aspx?year='+TRANSFORM(lnYear),.f.)
ohttp.SetRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
ohttp.SetRequestHeader('Accept-Encoding','gzip, deflate')
ohttp.SetRequestHeader('Connection','keep-alive')
ohttp.setRequestHeader('Set-Cookie',lcCookie)
ohttp.Send
STRTOFILE(SUBSTR(ohttp.ResponseText,4),'curs_bnr_'+TRANSFORM(lnYear)+'.xml')



Daniel Buduru
 7/1/2011 4:51:58 PM
User is offlineclivius33
68 posts


Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
 Daniel Buduru wrote
Mda. Asa pare sa functioneze tot timpul:

ohttp=CREATEOBJECT('winhttp.winhttprequest.5.1')
ohttp.Open('get','http://www.bnr.ro/Cursul-de-schimb-524.aspx',.f.)
ohttp.send()
lcCookie=ohttp.GetResponseHeader('Set-Cookie')

lnYear=2011
ohttp.Open('get','http://www.bnr.ro/MakeXmlFile.aspx?year='+TRANSFORM(lnYear),.f.)
ohttp.SetRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
ohttp.SetRequestHeader('Accept-Encoding','gzip, deflate')
ohttp.SetRequestHeader('Connection','keep-alive')
ohttp.setRequestHeader('Set-Cookie',lcCookie)
ohttp.Send
STRTOFILE(SUBSTR(ohttp.ResponseText,4),'curs_bnr_'+TRANSFORM(lnYear)+'.xml')



Acum pare sa mearga intr-adevar. Vazand ca dureaza cam mult am incercat si doar cu header-ul ''Set-Cookie', restul header-elor inlaturandu-le. Merge cateodata foarte repede (daca incerc imediat din nou, probabil e vreun cache ceva de unde incarca rapid), altadata sta destul de mult (cateva secunde). Dar oricum, a mers de fiecare data ! Ramane sa mai testez sa vad cat de stabila este treaba. Multumesc mult de tot pentru ajutor !!!
 7/1/2011 4:58:23 PM
User is offlineDaniel Buduru
2332 posts
1st




Re: Citire istoric curs valutar de pe site-ul BNR
 (N/A)
Headerele cu pricina sunt trimise de pagina de la bnr inapoi la server odata cu interogarea. Desigur, poti sa incerci si fara ele - asa am incercat si eu fara set-cookie si keep-alive. Doar ca, daca pagina lor seteaza aceste headere cand trimite interogarea, sunt sanse ca lipsa vreunui header sa afecteze functionarea rutinei de pe server care returneaza pagina.


Daniel Buduru
  Visual FoxPro  Visual FoxPro in general  Citire istoric ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement