FUNCTION HTTPPost2(plHttps,pcSvr,pcObjName,pcData,pcUser,pcPwd)
* This is the 'proper' way to use the WinINet functions to POST
* The INTERNET_FLAG_SECURE makes it an HTTS connection
DECLARE INTEGER InternetOpen IN wininet;
STRING sAgent,;
INTEGER lAccessType,;
STRING sProxyName,;
STRING sProxyBypass,;
STRING lFlags
DECLARE INTEGER InternetConnect IN wininet;
INTEGER hInternetSession,;
STRING sServerName,;
INTEGER nServerPort,;
STRING sUsername,;
STRING sPassword,;
INTEGER lService,;
INTEGER lFlags,;
INTEGER lContext
DECLARE INTEGER HttpOpenRequest IN wininet;
INTEGER hConnect,;
STRING lpszVerb,;
STRING lpszObjectName,;
STRING lpszVersion,;
STRING lpszReferer,;
INTEGER lpszAcceptTypes,;
INTEGER dwFlags,;
INTEGER dwContext
DECLARE INTEGER HttpSendRequest IN wininet;
INTEGER hRequest,;
STRING @ lpszHeaders,;
INTEGER dwHeadersLength,;
STRING @ lpOptional,;
INTEGER dwOptionalLength
DECLARE INTEGER InternetQueryDataAvailable IN wininet;
INTEGER hFile,;
INTEGER @ lpdwBytesAvailable,;
INTEGER dwFlags,;
INTEGER dwContext
DECLARE INTEGER InternetReadFile IN wininet;
INTEGER hFile,;
STRING @ sBuffer,;
INTEGER lNumBytesToRead,;
INTEGER @ dwNumberOfBytesRead
DECLARE INTEGER InternetCloseHandle IN wininet;
INTEGER hInet
LOCAL hSession, hService, hHttpRequest
LOCAL lsDomain, lsUser, lsPwd, lsUrlPath, lpData, lnFlags
LOCAL lnBytesAvailable, lnBytesRead, lpBuffer
* plHttps,pcSvr,pcObjName,pcData,pcUser,pcPwd
lsDomain = pcSvr
lsUrlPath = pcObjName
lpData = pcData
lnFlags = iif( plHtpps, INTERNET_FLAG_SECURE, 0 )
lsUser = pcUser
lsPwd = pcPwd
lpBuffer = 'FAILED'
hSession = InternetOpen("aasVfp", INTERNET_OPEN_TYPE_DIRECT, '', '', 0)
if (hSession#0)
hService = InternetConnect(hSession, (lsDomain), ;
INTERNET_DEFAULT_HTTPS_PORT, (lsUser), (lsPwd), ;
INTERNET_SERVICE_HTTP, 0, 0)
if (hService#0)
hHttpRequest = HttpOpenRequest(hService, "POST", (lsUrlPath), '', ;
'', '*/*', (lnFlags), 0)
if (hHttpRequest#0)
if (0=HttpSendRequest(hHttpRequest, 0, 0, @lpData, len(lpData)) )
lnBytesAvailable = 0
lnBytesRead = 0
InternetQueryDataAvailable(hHttpRequest, @lnBytesAvailable, 0, 0)
lpBuffer = Space(lnBytesAvailable+1)
InternetReadFile(hHttpRequest, @lpBuffer, lnBytesAvailable, @lnBytesRead)
lpBuffer = left(lpBuffer,lnBytesRead)
endif
endif
endif
endif
InternetCloseHandle(hSession)
RETURN lpBuffer
ENDFUNC