Search  
Thursday, May 24, 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  Aplicatii Web  Interogare...
 Interogare
 
 5/3/2011 12:52:30 PM
User is offlinemihaipopescump
13 posts


Interogare
 (Romania)

Buna ziua tuturor. Si Heeeelllllp!

Oficiul National al Registrului Comertului publica periodic “Buletinul Procedurilor de Insolventa”. Accesul se face fie pe baza de abonament (caz in care abonatul primeste la nivel de detaliu informatii juridice referitoare la cazul in speta), fie free (caz in care – cautand dupa anumite criterii - poti afla daca exista sau nu o procedura juridica de insolventa pentru o anumita societate comerciala). Da sau nu. Atat.

Mi-ar fi de mare folos o rutina (sau o idee, macar) prin care sa pot prelua acel “da” sau “nu” fara a mai accesa interfata ONRC.

 

Iata linkul cu pricina:

 

http://www.bpi.ro/cautare_debitor.php

 

Multumesc.

 5/4/2011 1:39:40 AM
User is offlineDumitru
172 posts
5th


Re: Interogare
 (N/A) Modified By Dumitru  on 5/4/2011 2:04:43 AM)
Merge dar e un pic de lucru si depinzi de ei daca schimba site-ul.
Am incercat form-ul de pe site si functioneaza din IE local, o sa mearga si din fox
Folosesti:

oHTTP = CREATEOBJECT("WinHttpRequest.5.1")

oHTTP.Open([POST], [http://www.bpi.ro/cautare_debitor.php], .F.)

* Continutul pe care-l trimiti (interogarea!!!) - am luat un exemplu :

*Criteriu de cautare "Nr. de buletin"
str="tip_cautare=1"

*si dupa caz:

* Numarul de buletin
str = str + "&nr_bins=200"

* Anul din care este buletinul
str = str + "&nr_bins_an=2010"

* pentru ca nu stim cu actioneaza scriptul de pe server trimitem tot ce contine form-ul, inclusiv butonul,
* cand va merge se pot face incercari pentru elimnarea variabilelor de prisos
str = str + "&Cautare_nr_bins=Căutare"

lstr = LEN(str)

oHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")

oHTTPsetRequestHeader("Content-Length", lstr)

oHTTP.setRequestHeader("Connection", "close")

oHTTP.SetTimeouts(30000, 30000, 30000, 30000) && timpul in msec cat astepti raspunsul

oHTTP.send(str);

IF oHTTP.status!=200

   ? " Serverul nu a raspuns in timp util! Status="+ ALLTRIM(STR(oHTTP.status,10))
   RETURN

ELSE

   strRaspuns = oHTTP.ResponseText

ENDIF

* Ca sa vezi ca a mers pana aici:
* ? strRaspuns
* trebuie sa afiseze sursa paginii

* acumi incarcam strRaspuns intr-un DOMDocument si-l parsam
* N-am incercat, html-ul este un fisier XML cu o anumita structura nu vad de ce nu s-ar incarca :

xmlDoc = CREATEOBJECT([Msxml2.DOMDocument.3.0])
xmlDoc.validateOnParse = .t.
xmlDoc.loadXML(strRaspuns)

* Aici vei obtine eroare daca ei nu au o pagina valida HTML conform specificatiilor W3C
* In acest caz trebuie folosite alte metode de parsare - e un string din care trebuie sa scoti ce ai nevoie!
IF (xmlDoc.parseError.errorCode <> 0)

   ? "Eroare parsare XML: ", xmlDoc.parseError.reason
   RETURN

ENDIF

* aici e mult de lucru
* fiecare interogare, in functie de criteriul de cautare va intoarce o pagina diferita, deci trebuie cate un parser pentru fiecare caz
* in principiu te folosesti de xPath pentru a obtine valoarea pe care o vrei din tabelul (html) furnizat drept raspuns :

oRootNode = xmlDoc.documentElement - intoarce nodul radacina ({html})

pathVal = oRootNode.selectNodes(sPath).item(nItem) - intoarce nodul care se gaseste in calea sPath in item-ul nItem

nodeT = pathVal.nodeType - tipul nodului, care poate fi: NODE_ELEMENT (1), NODE_ATTRIBUTE (2)

pathVal.text va intoarce valoarea de care ai nevoie.

Hint! Daca reusesti sa separi tabelul de restul paginii (din responseText si pus in DomDocument corect) folosesti XMLTOCURSOR si obtii direct tabela intr-un cursor.

Am cautat RSS pentru ca era mai simplu dar nu am gasit pe site-ul lor

 5/4/2011 2:03:53 PM
User is offlinemihaipopescump
13 posts


Re: Interogare
 (Romania)

Am apucat sa testez cat de cat si e super.

Adica incarc continut in strRaspuns, iar mai departe e doar munca. O sa incerc sa  simplific la maximum, in sensul ca voi face cautarea doar dupa CUI, care are valori verificate inca de la culegerea datelor.

Revin daca-mi prind urechile.

 

 

Multumesc din suflet, OmBun!

  Visual FoxPro  Aplicatii Web  Interogare...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement