Quantcast
Channel: VBForums - CodeBank - Visual Basic 6 and earlier
Viewing all articles
Browse latest Browse all 1449

used HttpSendRequestEx Upload data to the web page in sections

$
0
0
// InternetOpen ---:InternetConnect----HttpOpenRequest----InternetSetOption -HttpAddRequestHeaders---HttpSendRequestEx


Code:

Option Explicit
Event HttpError(Status As String)
Event HttpOpen(Status As String)
Event HttpSend(SendNum As Long, _
              Total As Long, _
              Status As String, _
              Ncancel As Boolean) '???????,??,??????
Event HttpComplete(????? As String, ??cookie As String, ????() As Byte)

Private Declare Sub Sleep Lib "Kernel32.dll" (ByVal dwMilliseconds As Long)

Private Declare Sub CopyMemory _
                Lib "kernel32" _
                Alias "RtlMoveMemory" (Destination As Any, _
                                      Source As Any, _
                                      ByVal length As Long)

Private Declare Function InternetOpenUrl _
                Lib "wininet.dll" _
                Alias "InternetOpenUrlA" (ByVal hOpen As Long, _
                                          ByVal sUrl As String, _
                                          ByVal sHeaders As String, _
                                          ByVal lLength As Long, _
                                          ByVal lFlags As Long, _
                                          ByVal lContext As Long) As Long

Private 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

Private Declare Function InternetConnect _
                Lib "wininet.dll" _
                Alias "InternetConnectA" (ByVal pub_lngInternetSession 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

Private Declare Function InternetReadFile _
                Lib "wininet.dll" (ByVal hFile As Long, _
                                  sBuffer As Any, _
                                  ByVal lNumBytesToRead As Long, _
                                  lNumberOfBytesRead As Long) As Integer
 
Private Declare Function InternetWriteFile _
                Lib "wininet.dll" (ByVal hFile As Long, _
                                  buffer As Any, _
                                  ByVal lNumBytesToWrite As Long, _
                                  dwNumberOfBytesWritten As Long) As Integer

Private Declare Function InternetSetCookie _
                Lib "wininet.dll" _
                Alias "InternetSetCookieA" (ByVal lpszUrlName As String, _
                                            ByVal lpszCookieName As String, _
                                            ByVal lpszCookieData As String) As Boolean

Private Declare Function InternetGetCookie _
                Lib "wininet.dll" _
                Alias "InternetGetCookieA" (ByVal lpszUrlName As String, _
                                            ByVal lpszCookieName As String, _
                                            ByVal lpszCookieData As String, _
                                            lpdwSize As Long) As Boolean

Private Declare Function InternetCloseHandle _
                Lib "wininet.dll" (ByVal hInet As Long) As Integer
 
Private Type INTERNET_BUFFERS

dwStructSize As Long        ' used for API versioning. Set to sizeof(INTERNET_BUFFERS)
Next As Long                ' INTERNET_BUFFERS chain of buffers

lpcszHeader As Long      ' pointer to headers (may be NULL)
dwHeadersLength As Long    ' length of headers if not NULL
dwHeadersTotal As Long      ' size of headers if not enough buffer
lpvBuffer As Long          ' pointer to data buffer (may be NULL)
dwBufferLength As Long      ' length of data buffer if not NULL
dwBufferTotal As Long      ' total size of chunk, or content-length if not chunked
dwOffsetLow As Long        ' used for read-ranges (only used in HttpSendRequest2)
dwOffsetHigh As Long

End Type

Private InternetBUFFERS As INTERNET_BUFFERS
 
Private 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

Private 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
 
Private Declare Function HttpSendRequestEx _
                Lib "wininet.dll" _
                Alias "HttpSendRequestExA" (ByVal hHttpRequest As Long, _
                                            lpBuffersIn As INTERNET_BUFFERS, _
                                            ByVal lpBuffersOut As Long, _
                                            ByVal dwFlags As Long, _
                                            ByVal dwContext As Long) As Long
 
Private Declare Function HttpEndRequest _
                Lib "wininet.dll" _
                Alias "HttpEndRequestA" (ByVal hHttpRequest As Long, _
                                        ByVal lpBuffersOut As Long, _
                                        ByVal dwFlags As Long, _
                                        ByVal dwContext As Long) As Long

Private Declare Function HttpQueryInfo _
                Lib "wininet.dll" _
                Alias "HttpQueryInfoA" (ByVal hHttpRequest As Long, _
                                        ByVal lInfoLevel As Long, _
                                        ByRef sBuffer As Any, _
                                        ByRef lBufferLength As Long, _
                                        ByRef lIndex As Long) As Integer

Private Declare Function InternetQueryOption _
                Lib "wininet.dll" _
                Alias "InternetQueryOptionA" (ByVal hInternet As Long, _
                                              ByVal lOption As Long, _
                                              ByRef sBuffer As Any, _
                                              ByRef lBufferLength As Long) As Integer
       
 
Const GENERIC_READ = &H80000000

Const GENERIC_WRITE = &H40000000

Const INTERNET_OPEN_TYPE_DIRECT = 1

Const INTERNET_OPEN_TYPE_PRECONFIG = 0

Const INTERNET_OPEN_TYPE_PROXY = 3

Const INTERNET_INVALID_PORT_NUMBER = 0

Const INTERNET_DEFAULT_HTTP_PORT = 80

Const INTERNET_SERVICE_HTTP = 3

Const SECURITY_FLAG_IGNORE_UNKNOWN_CA = &H100

Const INTERNET_FLAG_ASYNC = &H10000000              ' this request is asynchronous (where supported)

Const INTERNET_FLAG_TRANSFER_BINARY = &H2

Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000      ' don't write this item to the cache

Const INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE

Const INTERNET_FLAG_SECURE = &H800000              ' use PCT/SSL if applicable (HTTP)

Const INTERNET_FLAG_KEEP_CONNECTION = &H400000      ' use keep-alive semantics

Const INTERNET_FLAG_MULTIPART = &H200000

Const INTERNET_FLAG_NO_AUTO_REDIRECT = &H200000    ' don't handle redirections automatically

Const INTERNET_FLAG_READ_PREFETCH = &H100000        ' do background read prefetch

Const INTERNET_FLAG_RELOAD = &H80000000            ' ==Brings the data across the wire even if it locally cached.

Const INTERNET_FLAG_NO_COOKIES = &H80000            ' no automatic cookie handling

Const INTERNET_FLAG_NO_AUTH = &H40000              ' no automatic authentication handling

Const INTERNET_FLAG_CACHE_IF_NET_FAIL = &H10000    ' return cache file if net request fails
Const INTERNET_STATUS_REQUEST_COMPLETE = 100 '????????


Const INTERNET_FLAG_EXISTING_CONNECT = &H20000000

Const INTERNET_DEFAULT_HTTPS_PORT = 443

Const INTERNET_DEFAULT_SOCKS_PORT = 1080

Const INTERNET_OPTION_CONNECT_TIMEOUT = 2

Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6

Const INTERNET_OPTION_SEND_TIMEOUT = 5

Const INTERNET_OPTION_USERNAME = 28

Const INTERNET_OPTION_PASSWORD = 29

Const INTERNET_OPTION_PROXY_USERNAME = 43

Const INTERNET_OPTION_PROXY_PASSWORD = 44

Const HTTP_QUERY_CONTENT_LENGTH = 5 '???? ??? ??? ????.

Const HTTP_QUERY_STATUS_CODE = 19 '?? ?? ??? ????? ????.

       
Const HTTP_QUERY_LAST_MODIFIED = 11

Const HTTP_QUERY_PRAGMA = 17

Const HTTP_QUERY_VERSION = 18

Const HTTP_QUERY_FORWARDED = 30

Const HTTP_QUERY_SERVER = 37

Const HTTP_QUERY_USER_AGENT = 39

Const HTTP_QUERY_SET_COOKIE = 43

Const HTTP_QUERY_REQUEST_METHOD = 45

Const HTTP_STATUS_DENIED = 401

Const HTTP_STATUS_PROXY_AUTH_REQ = 407

Const HTTP_QUERY_STATUS_TEXT = 20

Const HTTP_QUERY_RAW_HEADERS = 21

Const HTTP_QUERY_RAW_HEADERS_CRLF = 22

Const HTTP_QUERY_CONTENT_TYPE = 1

Const WININET_API_FLAG_ASYNC = 1  '// force async operation

Const WININET_API_FLAG_SYNC = 4    '// force sync operation

Const WININET_API_FLAG_USE_CONTEXT = 8    '// use value supplied in dwContext (even if 0)
 
Const HSR_ASYNC = WININET_API_FLAG_ASYNC                      '// force async

Const HSR_SYNC = WININET_API_FLAG_SYNC                          '// force sync

Const INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = &H2000

Const INTERNET_OPTION_SECURITY_FLAGS = 31

Const INTERNET_FLAG_IGNORE_CERT_CN_INVALID = &H1000

Const HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT '// use dwContext value

Const HSR_INITIATE = 8                                                          '// iterative operation (completed by HttpEndRequest)

Const HSR_DOWNLOAD = 16                                                  '// download to file

Const HSR_CHUNKED = 32                                                      '// operation is send of chunked data

Const INTERNET_OPTION_VERSION = 40

Const HTTP_ADDREQ_FLAG_REPLACE = &H80000000

Const HTTP_ADDREQ_FLAG_ADD_IF_NEW = &H10000000

Const HTTP_ADDREQ_FLAG_ADD = &H20000000

Const HTTP_QUERY_FLAG_REQUEST_HEADERS = &H80000000

Const HTTP_QUERY_FLAG_NUMBER = &H20000000

 
Private Declare Function InternetFindNextFile _
                Lib "wininet.dll" _
                Alias "InternetFindNextFileA" (ByVal hFind As Long, _
                                              lpvFindData As WIN32_FIND_DATA) As Long

Private Const FTP_TRANSFER_TYPE_BINARY As Long = &H2 '0x00000002

Private Const INTERNET_SERVICE_FTP = 1

Private Declare Function InternetSetOption _
                Lib "wininet.dll" _
                Alias "InternetSetOptionA" (ByVal hInternet As Long, _
                                            ByVal lOption As Long, _
                                            ByRef sBuffer As Any, _
                                            ByVal lBufferLength As Long) As Integer

Private Type FILETIME

    dwLowDateTime As Long
    dwHighDateTime As Long

End Type

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

Private Declare Function InternetSetOptionStr _
                Lib "wininet.dll" _
                Alias "InternetSetOptionA" (ByVal hInternet As Long, _
                                            ByVal lOption As Long, _
                                            ByVal sBuffer As String, _
                                            ByVal lBufferLength As Long) As Integer

Private Type WIN32_FIND_DATA

    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * 260
    cAlternate As String * 14

End Type
 
 
Dim bProcess As Boolean

Dim stStart  As Single
 
 Enum UploadSpeedEnum

    UploadLowSpeed = -1      ' 50? ??? Sleep(1)? ??  / CPU???(H) 50%
    UploadNormalSpeed = 0    '100? ??? Sleep(1)? ??  / CPU???(H) 70%
    UploadHighSpeed = 1      '150? ??? Sleep(1)? ??  / CPU???(H) 80%

End Enum

Private m_LonLenPostArray  As Long

Private m_StrReturnCookie  As String

Private m_StrReturnHeads  As String

Private m_StrStatus        As String

Private m_BytReturnArray() As Byte

Public Function ReturnArray() As Byte
    ReturnArray = m_BytReturnArray()

End Function



Public Property Get ReturnCookie() As String '?????cookei
    ReturnCookie = m_StrReturnCookie

End Property

Public Property Get LenPostArray() As Long '??post?????,????
    LenPostArray = m_LonLenPostArray

End Property


Viewing all articles
Browse latest Browse all 1449

Trending Articles