#DEFINE FLAG_ICC_FORCE_CONNECTION 0x01
*!*	http://www.mfinante.ro/contribuabili/link.jsp?body=/cod.do
*!*	cod=1879855
Clear 
SET PROCEDURE TO D:\ROA_RB\ROACONT\COMUN\PROGRAME\OPROCEDURI_COMUNE.PRG ADDITIVE 
LOCAL lcResponse, lnResponse, loMyXMLHTTP

loHTTP = CREATEOBJECT("Microsoft.XMLHTTP")
loHTTP.OPEN("POST", [http://www.mfinante.ro/contribuabili/link.jsp?body=/cod.do], .F.)
loHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

lcValues = "cod=18798551"
loHTTP.SEND(lcValues)

lnStatus = loHTTP.STATUS
lcResponse =  UPPER(loHTTP.responseText)

lnLinii = ALines(laLines,lcResponse)

lcDenumire = laLines[670]
lnPos1 = Rat('>',lcDenumire,3)
lnPos2 = Rat('<',lcDenumire,2)
lcDenumire = Substr(lcDenumire, lnPos1 + 1, lnPos2 - lnPos1 - 1)
*MessageBox(lcDenumire)
*!*	MESSAGEBOX(lnStatus )
*!*	 NU EXISTA AGENT ECONOMIC CU ACEST COD
	STRTOFILE(lcResponse,"c:\test.htm")
	OPEN_DEFAULT_APP("c:\test.htm")

DEFINE CLASS myXMLHTTP AS CUSTOM

	oHTTP = NULL

	cHost = ""
	nError = 0
	cError = ""

	PROCEDURE INIT
		LPARAMETERS tcHost
		IF PCOUNT() = 1 AND TYPE('tcHost') = 'C' AND !EMPTY(tcHost)
			THIS.cHost = tcHost
		ENDIF
*!*			THIS.oHTTP = CREATEOBJECT("Microsoft.XMLHTTP")
		THIS.oHTTP = CREATEOBJECT("MSXML2.ServerXMLHTTP")

	ENDPROC && init

	FUNCTION CHECK_INTERNET

		DECLARE INTEGER InternetCheckConnection IN wininet ;
			STRING lpszUrlSTRING, INTEGER dwFlags, INTEGER dwReserved

		myHost = THIS.cHost

		RETURN InternetCheckConnection(myHost,FLAG_ICC_FORCE_CONNECTION,0)
	ENDFUNC && CHECK_INTERNET

	FUNCTION post
		LPARAMETERS tcValues, tcResponse

		LOCAL lcValues, loHTTP, lcResponse, lnResponse
		LOCAL llAsincron
		llAsincron = .T.
		lnResponse = 1
		tcResponse = ""
		lcResponse = ""
		IF .F.
			* NU MAI VERIFIC CONEXIUNEA LA INTERNET - DACA ROUTERUL NU ARE INTERNET STA 21 SECUNDE SA VERIFICE :(
			* POSTEZ EROAREA ASINCRON - DACA ARE INTERNET O TRIMITE
			lnCheckInternet = THIS.CHECK_INTERNET()
			IF lnCheckInternet <= 0
				RETURN
			ENDIF
		ENDIF 	
		IF EMPTY(THIS.cHost)
			RETURN
		ENDIF
		IF TYPE('this.oHTTP') = "O"
			loHTTP = THIS.oHTTP
			lcHost= THIS.cHost

			loHTTP.OPEN("POST", lcHost, llAsincron)
			loHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

			lcValues = tcValues
			loHTTP.SEND(lcValues)

			IF .F.
				*!* DACA FOLOSESC XMLHTTP ASINCRON TREBUIE SA ASTEPT READYSTATE = 4 IN DO WHILE
				lnStatus = loHTTP.STATUS
				tcResponse =  UPPER(loHTTP.responseText)
				lnResponse = IIF('SUCCES'$tcResponse,1,-1)
			ENDIF 
		ENDIF

		RETURN lnResponse

	ENDFUNC && post

	FUNCTION postError
		LPARAMETERS tcErrorMsg, tcUserName, tcProgram, tcVersion, tcDatabaseUser

		LOCAL lcValues, lcError, lcUserName, lcProgram, lnResponse, lcVersion, lcDatabaseUser
		LOCAL laVersion
		DIMENSION laVersion[12]

		lcError = ALLTRIM(TRANSFORM(tcErrorMsg))
		lcUserName = ALLTRIM(TRANSFORM(tcUserName))
		lcProgram = ALLTRIM(TRANSFORM(tcProgram))

		IF EMPTY(tcVersion) OR TYPE('tcVersion') <> 'C'
			lnVersion = AGETFILEVERSION(laVersion, SYS(16,0))
			IF lnVersion >= 4
				lcVersion = laVersion[4]
			ELSE
				lcVersion = ""
			ENDIF
		ELSE
			lcVersion = ALLTRIM(tcVersion)
		ENDIF

		IF EMPTY(tcDatabaseUser) OR TYPE('tcDataBaseUser') <> 'C'
*!*	modificare	ROASTART	v 2.0.29
*!*				lcDatabaseUser = IIF(TYPE('gcs') = 'C', gcS, "")
			lcDatabaseUser = IIF(TYPE('gcs') = 'C', gcS, IIF(TYPE('gcHost') = 'C',gcHost, ""))
*!*	modificare	ROASTART	v 2.0.29	^
		ELSE
			lcDatabaseUser = tcDatabaseUser
		ENDIF

		lcError = THIS.urlencode(lcError)

		lcValues = "error[errormsg]=" + lcError + "&error[username]=" + lcUserName + "&error[program]=" + lcProgram + ;
			"&error[version]=" + lcVersion + "&error[databaseuser]=" + lcDatabaseUser

		lnResponse = THIS.post(lcValues)

		RETURN lnResponse

	ENDFUNC && postError

	PROCEDURE ERROR
		LPARAMETERS nError,cMethod,nLine

		lcErrorMsg=MESSAGE()+CHR(13)+CHR(13)
		lcErrorMsg=lcErrorMsg+"Method:    "+cMethod
		lcCodeLineMsg=MESSAGE(1)
		IF BETWEEN(nLine,1,10000) AND NOT lcCodeLineMsg="..."
			lcErrorMsg=lcErrorMsg+CHR(13)+"Line:         "+ALLTRIM(STR(nLine))
			IF NOT EMPTY(lcCodeLineMsg)
				lcErrorMsg=lcErrorMsg+CHR(13)+CHR(13)+lcCodeLineMsg
			ENDIF
		ENDIF

		MESSAGEBOX(lcErrorMsg)

	ENDPROC && error

	FUNCTION urlencode
		*
		* from http://www.tek-tips.com/gviewthread.cfm/lev2/4/lev3/27/pid/184/qid/597112
		* also http://fox.wikis.com/wc.dll?Wiki~VFPPortListener~VFP
		* I'm confused by this code.
		* I believe it doesn't translate spaces correctly
		*
		* a proper definition is in: http://www.ietf.org/rfc/rfc2396.txt
		* starting about half way down page 5
		* unreserved characters include all alphas, all digits and the following unreserved marks
		* mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
		*
		LPARAMETER pcinstr
		* ' encode Percent signs
		* ' Double Quotes
		* ' CarriageReturn / LineFeeds
		LOCAL lcout, lni
		lcout = ''
		FOR lni = 1 TO LEN(pcinstr)
			lcch = SUBSTR(pcinstr,lni,1)
			DO CASE
				CASE ISALPHA(lcch) OR ISDIGIT(lcch) OR INLIST(lcch, "-" , "_" , "." , "!" , "~" , "*" , "'" , "(" , ")")
					* do nothing
				CASE lcch = " "
					lcch = "+"
				OTHERWISE
					lcch = '%' + RIGHT( TRANSFORM(ASC(lcch),'@0'), 2 )
			ENDCASE
			lcout = lcout + lcch
		ENDFOR
		RETURN lcout
	ENDFUNC && UrlEncode

ENDDEFINE
