Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Function getWebPage(AccessMode As MYURLARRAY, FollowRedirection As Boolean, _
- IncludeGet As Boolean) As String
- Dim botInternetOpen As Long, botInternetConnect As Long, botOpenRequest As Long
- Dim botPageValid As Boolean, DomainName As String, PortMode As Long
- Dim InternetUserName As String, InternetPassWord As String, UrlString As String
- Dim FetchPage As String, FetchFlags As Long, FetchMode As String
- Dim FetchPost As String, lenFetchPost As Long, webUserAgent As String
- Dim WebPage As String * 1024, lenWebPage As Long, idxWebPage As Long
- Dim Whack() As String, WiDx As Long
- Dim InternetError As Long, botPageCode As Long, webResults As String
- On Error GoTo InternetWhoops
- BotVariables.Item(fbInternetResults) = ""
- If axInternetTimer Then Err.Raise 1009
- UrlString = BotScript.Http.serverName & BotScript.Http.serverPath
- If UrlString = "" Then Err.Raise 1000
- Whack() = Split(UrlString, "/")
- If InStr(1, Whack(0), "http", vbTextCompare) <> 1 Then Err.Raise 1001
- If InStr(Whack(2), ".") = 0 Then Err.Raise 1002
- If BotScript.Http.botUserAgent = "" Then Err.Raise 1003
- webUserAgent = VersionData & " : " & BotScript.Http.botUserAgent
- PortMode = IIf(LCase$(Whack(0)) = "http:", _
- INTERNET_DEFAULT_HTTP_PORT, INTERNET_DEFAULT_HTTPS_PORT)
- DomainName = Whack(2)
- FetchPage = ""
- For WiDx = 3 To UBound(Whack())
- FetchPage = FetchPage & "/" & Whack(WiDx)
- Next WiDx
- InternetUserName = IIf(BotScript.Http.serverUser = "", _
- vbNullString, BotScript.Http.serverUser)
- InternetPassWord = IIf(BotScript.Http.serverPass = "", _
- vbNullString, BotScript.Http.serverPass)
- lenWebPage = Len(WebPage)
- botInternetOpen = InternetOpen(webUserAgent, _
- INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
- InternetError = GetLastError()
- If botInternetOpen = 0 Then Err.Raise 1011
- botInternetConnect = InternetConnect(botInternetOpen, DomainName, PortMode, _
- InternetUserName, InternetPassWord, INTERNET_SERVICE_HTTP, 0, 0)
- InternetError = GetLastError()
- If botInternetConnect = 0 Then Err.Raise 1012
- FetchPage = IIf(IncludeGet, combineUrlMembers(FetchPage, urlGet), FetchPage)
- FetchFlags = INTERNET_FLAG_RELOAD Or IIf(FollowRedirection, _
- 0, INTERNET_FLAG_NO_AUTO_REDIRECT)
- FetchMode = IIf(AccessMode = urlPost, "POST", "GET")
- botOpenRequest = HttpOpenRequest(botInternetConnect, FetchMode, FetchPage, _
- "HTTP/1.0", vbNullString, 0, FetchFlags, 0)
- InternetError = GetLastError()
- If botOpenRequest = 0 Then Err.Raise 1013
- lenWebPage = Len(WebPage)
- If AccessMode = urlPost Then
- FetchPost = combineUrlMembers("", urlPost)
- lenFetchPost = Len(FetchPost)
- Else
- FetchPost = vbNullString
- lenFetchPost = 0
- End If
- botPageValid = HttpSendRequest(botOpenRequest, vbNullString, 0, _
- FetchPost, lenFetchPost)
- InternetError = GetLastError()
- If botPageValid = False Then Err.Raise 1014
- idxWebPage = lenWebPage
- botPageValid = HttpQueryInfo(botOpenRequest, HTTP_QUERY_STATUS_CODE, _
- ByVal WebPage, idxWebPage, 0)
- InternetError = GetLastError()
- If botPageValid = False Then Err.Raise 1015
- botPageCode = Val(WebPage)
- Select Case botPageCode
- Case 200
- BotVariables.Item(fbInternetResults) = "200 - Successful Page Fetch"
- Do
- WebPage = String$(lenWebPage, Chr$(0))
- botPageValid = InternetReadFile(botOpenRequest, WebPage, _
- lenWebPage, idxWebPage)
- If (botPageValid = False) Or (idxWebPage = 0) Then Exit Do
- webResults = webResults & Left$(WebPage, idxWebPage)
- DoEvents ' to prevent program from seeming to be unresponsive
- Loop
- webResults = stripHtmlEntities(webResults)
- Case 302
- BotVariables.Item(fbInternetResults) = "302 - Got Redirection"
- idxWebPage = lenWebPage
- WebPage = String$(lenWebPage, Chr$(0))
- botPageValid = HttpQueryInfo(botOpenRequest, HTTP_QUERY_LOCATION, _
- ByVal WebPage, idxWebPage, 0)
- If lenWebPage > 0 Then webResults = Left$(WebPage, idxWebPage)
- Case Else
- Err.Raise 1004
- End Select
- InternetWhoops:
- InternetCloseHandle botOpenRequest
- InternetCloseHandle botInternetConnect
- InternetCloseHandle botInternetOpen
- If Err.number > 0 Then
- If Err.number < 1000 Then
- PumpInternalMessage "I-Net Failure: " _
- & Err.number & "-" & Err.Description
- Else
- If Err.number < 1010 Then
- Select Case Err.number
- Case 1000
- BotVariables.Item(fbInternetResults) = _
- "000 - Internet Access Failure, no server defined"
- Case 1001
- BotVariables.Item(fbInternetResults) = "001 - Invalid protocol, " _
- & Whack(0) & " not supported"
- Case 1002
- BotVariables.Item(fbInternetResults) = "002 - Invalid domain name, " _
- & Whack(2) & " does not appear to be valid"
- Case 1003
- BotVariables.Item(fbInternetResults) = "007 - Invalid botname"
- Case 1004
- BotVariables.Item(fbInternetResults) = botPageCode _
- & " - Got unhandled code"
- Case 1009
- BotVariables.Item(fbInternetResults) = "444 - Access timeout failure"
- Case Else
- BotVariables.Item(fbInternetResults) = "990 - unknown error code"
- End Select
- PumpInternalMessage "I-Net Failure: " _
- & Err.number & "-" & BotVariables.Item(fbInternetResults)
- Else
- WebPage = String$(0, lenWebPage)
- FormatMessage FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, InternetError, _
- LANG_NEUTRAL, WebPage, 200, ByVal 0&
- PumpInternalMessage "I-Net Failure: " _
- & Err.number & "-" & Left$(WebPage, InStr(WebPage, Chr$(0)) - 1)
- BotVariables.Item(fbInternetResults) = _
- "999 - Read connection log for error message"
- End If
- End If
- getWebPage = ""
- Else
- getWebPage = webResults
- axInternetTimer = True
- addAutomation axInternetInhibit, axInternetTimeOut
- End If
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement