|
Новичок
Регистрация: 11.11.2009
Сообщений: 1
|
Загрузка страницы с использованием прокси через WinInet API
Оч нужно загрузить страницу используя прокси. Использую для этого код:
[code]
Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const INTERNET_OPEN_TYPE_PROXY = 3
Public Const INTERNET_DEFAULT_HTTP_PORT = 80
Public Const INTERNET_DEFAULT_HTTPS_PORT = 443
Public Const INTERNET_SERVICE_HTTP = 3
Public Const INTERNET_FLAG_RELOAD = &H80000000
Public Const INTERNET_FLAG_SECURE = &H800000
Public Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Public Const INTERNET_FLAG_NO_AUTH = &H40000
Public Const INTERNET_FLAG_FORMS_SUBMIT = &H40
Public Const INTERNET_OPTION_PROXY = 38
Public Const INTERNET_OPTION_SETTINGS_CHANGED As Long = 39
Public Const INTERNET_FLAG_ASYNC = &H10000000
Public Const INTERNET_FLAG_OFFLINE = &H1000000
'-------------------------------
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hHttpSession As Long, ByVal sVerb As String, ByVal sObjectName As String, ByVal sVersion As String, ByVal sReferer As String, ByVal something As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, sOptional As Any, ByVal lOptionalLength As Long) As Integer
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Public Function URLGetStrPr(sURL As String, Optional proxy As String = vbNullString, Optional port As Integer = 80, Optional sRefer As String = vbNullString, Optional Load As Boolean = True) As String
Dim hInternet As Long
Dim hConnect As Long
Dim hRequest As Long
Dim bSend As Integer
Dim sReadBuffer As String * 2048
Dim bDoLoop As Boolean
Dim bRead As Boolean
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
Dim sB() As Byte
scUserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; WebMoney Advisor; .NET CLR 1.1.4322; InfoPath.2)"
sB() = StrConv(proxy, vbFromUnicode)
hInternet = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PROXY, sB(0), "", INTERNET_FLAG_ASYNC)
er = GetLastError
If hInternet <> 0 Then 'открываем HTTP сессию
hConnect = InternetConnect(hInternet, Left$(sURL, InStr(sURL, "/") - 1), INTERNET_DEFAULT_HTTP_PORT, vbNullString, vbNullString, INTERNET_SERVICE_HTTP, 0, 0)
If hConnect <> 0 Then 'открываем запрос
hRequest = HttpOpenRequest(hConnect, "GET", Right(sURL, Len(sURL) - InStr(sURL, "/") + 1), "HTTP/1.1", sRefer, 0, INTERNET_FLAG_KEEP_CONNECTION, 0)
If hRequest <> 0 Then 'посылаем запрос
bSend = HttpSendRequest(hRequest, vbNullString, 0, vbNullString, 0)
If bSend Then 'создаём выходной файл
bDoLoop = Load
While bDoLoop
sReadBuffer = vbNullString
bRead = InternetReadFile(hRequest, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)<br
|