Advertisement
Guest User

Untitled

a guest
Sep 13th, 2010
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'Taken from http://www.experts-exchange.com/Programming/System/Windows__Programming/Q_22729407.html
  2.  
  3. Option Explicit
  4.  
  5. Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszCallerName As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
  6. Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal lpszServerName As String, ByVal nProxyPort As Integer, ByVal lpszUsername As String, ByVal lpszPassword As String, ByVal dwService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
  7. Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
  8. Private Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hInternetSession As Long, ByVal lpszVerb As String, ByVal lpszObjectName As String, ByVal lpszVersion As String, ByVal lpszReferer As String, ByVal lpszAcceptTypes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
  9. Private Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal sOptional As String, ByVal lOptionalLength As Long) As Boolean
  10. Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInternetHandle As Long) As Boolean
  11. Private Declare Function HttpAddRequestHeaders Lib "wininet.dll" Alias "HttpAddRequestHeadersA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lModifiers As Long) As Integer
  12.  
  13. Const INTERNET_FLAG_RELOAD = &H80000000
  14. Const HTTP_ADDREQ_FLAG_ADD = &H20000000
  15. Const HTTP_ADDREQ_FLAG_REPLACE = &H80000000
  16.  
  17.  
  18. Public Function PostInfo(Server As String, Script As String, PostData As String) As String
  19.  
  20.     Dim hInternetOpen As Long
  21.     Dim hInternetConnect As Long
  22.     Dim hHttpOpenRequest As Long
  23.     Dim bRet As Boolean
  24.     Dim bDoLoop  As Boolean
  25.     Dim sReadBuffer As String * 4096
  26.     Dim lNumberOfBytesRead  As Long
  27.     Dim sBuffer As String
  28.     Dim sHeader As String
  29.     Dim lPostDataLen As Long
  30.  
  31.     hInternetOpen = 0
  32.     hInternetConnect = 0
  33.     hHttpOpenRequest = 0
  34.    
  35.     'Use registry access settings.
  36.    Const INTERNET_OPEN_TYPE_PRECONFIG = 0
  37.    
  38.     hInternetOpen = InternetOpen("MyBrowser", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
  39.    
  40.     If hInternetOpen <> 0 Then
  41.         'Type of service to access.
  42.        Const INTERNET_SERVICE_HTTP = 3
  43.         Const INTERNET_DEFAULT_HTTP_PORT = 80
  44.         'Change the server to your server name
  45.        hInternetConnect = InternetConnect(hInternetOpen, Server, INTERNET_DEFAULT_HTTP_PORT, vbNullString, "HTTP/1.0", INTERNET_SERVICE_HTTP, 0, 0)
  46.    
  47.         If hInternetConnect <> 0 Then
  48.             'Brings the data across the wire even if it locally cached.
  49.          
  50.             hHttpOpenRequest = HttpOpenRequest(hInternetConnect, "POST", Script, "HTTP/1.1", vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
  51.             If hHttpOpenRequest <> 0 Then
  52.                 sHeader = "Content-Type: application/x-www-form-urlencoded"
  53.                 lPostDataLen = Len(PostData)
  54.                 bRet = HttpSendRequest(hHttpOpenRequest, sHeader, Len(sHeader), PostData, lPostDataLen)
  55.                
  56.                 bDoLoop = True
  57.                 Do While bDoLoop
  58.                     sReadBuffer = vbNullString
  59.                     bDoLoop = InternetReadFile(hHttpOpenRequest, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
  60.                     sBuffer = sBuffer & Left(sReadBuffer, lNumberOfBytesRead)
  61.                     If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
  62.                 Loop
  63.                
  64.                 PostInfo = sBuffer
  65.                 bRet = InternetCloseHandle(hHttpOpenRequest)
  66.                 End If
  67.                 bRet = InternetCloseHandle(hInternetConnect)
  68.             End If
  69.             bRet = InternetCloseHandle(hInternetOpen)
  70.        End If
  71.   End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement