FUNCTION HTTPGetEx LPARAMETERS tcPage, tcBuffer, tnBufferSize, tcHeaders, tcFileName, lpost DECLARE INTEGER HttpOpenRequest ; IN WININET.DLL ; INTEGER hHTTPHandle,; STRING lpzReqMethod,; STRING lpzPage,; STRING lpzVersion,; STRING lpzReferer,; STRING lpzAcceptTypes,; INTEGER dwFlags,; INTEGER dwContextw hHTTPResult=HttpOpenRequest(THIS.hhttpsession,; Icase(VARTYPE(lpost)='C', lpost, lpost or tnPostSize > 0, "POST","GET"),; tcPage,; NULL,NULL,NULL,; INTERNET_FLAG_RELOAD + ; IIF(THIS.lsecurelink,INTERNET_FLAG_SECURE,0) + ; this.nHTTPServiceFlags,0) *** Apply timeout to the HTTP connection handle THIS.wininetsettimeout(THIS.nConnectTimeOut,hHTTPResult) THIS.wininetsettimeout(THIS.nConnectTimeOut) THIS.hhttpsession=hHTTPResult DECLARE INTEGER HttpSendRequest ; IN WININET.DLL ; INTEGER hHTTPHandle,; STRING lpzHeaders,; INTEGER cbHeaders,; STRING lpzPost,; INTEGER cbPost dwTimeoutSecs = 60 llRetVal=InternetSetOption(hHTTPResult,; INTERNET_OPTION_RECEIVE_TIMEOUT,; @dwTimeoutSecs,4) llRetVal=InternetSetOption(hHTTPResult,; INTERNET_OPTION_SEND_TIMEOUT,; @dwTimeoutSecs,4) dwTimeoutSecs=1 &&// Retry only 1 time llRetVal=InternetSetOption( hHTTPResult,; INTERNET_OPTION_CONNECT_RETRIES,; @dwTimeoutSecs,4) ? 'Before HttpSendRequest' * Todo: why HttpSendRequest takes 5 seconds ? lnRetval=HttpSendRequest(hHTTPResult,tcHeaders,LEN(tcHeaders),lcPostBuffer,tnPostSize) ? 'After HttpSendRequest'