cLocKwOrk
Feb 20th, 2001, 09:06 PM
Hi all,
I was wondering is any of you knew an alternative API to InternetReadFile. I am currently using it with some success, but the only problem that I can see with it is that there is no timeout when hit a web page... so if its down the call never returns.
I know there is a InternetReadFileRev that allows you to specify the timeout, but the only problem with it is that it doesn't return the # of bytes read in. (So if I send it a 32byte buffer and it only reads in 20bytes, I want to know since the rest of the buffer will be filled with garbage).
My code looks something like this:
Public Function justReturnWholePageString(passedURL As String) As String
Dim newlinePosition As Integer
Dim hOpen As Long
Dim hOpenUrl As Long
Dim sUrl As String
Dim LineBuffer As String
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String * 2048
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
sUrl = passedURL
LineBuffer = ""
testLineCounter = 0
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
bDoLoop = True
Application.ScreenUpdating = True
While (bDoLoop)
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
LineBuffer = LineBuffer & sReadBuffer
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
If Not CBool(lNumberOfBytesRead) Then
bDoLoop = False
End If
Wend
justReturnWholePageString = sBuffer
If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
End Function
Can anyone suggest an alternative for me?
TIA!
I was wondering is any of you knew an alternative API to InternetReadFile. I am currently using it with some success, but the only problem that I can see with it is that there is no timeout when hit a web page... so if its down the call never returns.
I know there is a InternetReadFileRev that allows you to specify the timeout, but the only problem with it is that it doesn't return the # of bytes read in. (So if I send it a 32byte buffer and it only reads in 20bytes, I want to know since the rest of the buffer will be filled with garbage).
My code looks something like this:
Public Function justReturnWholePageString(passedURL As String) As String
Dim newlinePosition As Integer
Dim hOpen As Long
Dim hOpenUrl As Long
Dim sUrl As String
Dim LineBuffer As String
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String * 2048
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
sUrl = passedURL
LineBuffer = ""
testLineCounter = 0
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
bDoLoop = True
Application.ScreenUpdating = True
While (bDoLoop)
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
LineBuffer = LineBuffer & sReadBuffer
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
If Not CBool(lNumberOfBytesRead) Then
bDoLoop = False
End If
Wend
justReturnWholePageString = sBuffer
If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
End Function
Can anyone suggest an alternative for me?
TIA!