Changes

Internet Transfer Control in VB6

2,125 bytes added, 03:12, 24 November 2010
The following lines were added (+) and removed (-):
----<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">----=[http://acisabukody.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=----=[http://acisabukody.co.cc CLICK HERE]=----</div><big><big>&lt;big&gt;&lt;big&gt;</big></big> &lt;/big&gt;&lt;/big&gt;      Case 0:    StateText = "stateless"     Case 0:    StateText = &quot;stateless&quot;     Case 1:    StateText = "checking remote address"     Case 1:    StateText = &quot;checking remote address&quot;     Case 2:    StateText = "remote address accepted"     Case 2:    StateText = &quot;remote address accepted&quot;     Case 3:    StateText = "connecting"     Case 3:    StateText = &quot;connecting&quot;     Case 4:    StateText = "connected"     Case 4:    StateText = &quot;connected&quot;     Case 5:    StateText = "data requesting"     Case 5:    StateText = &quot;data requesting&quot;     Case 6:    StateText = "data sent"     Case 6:    StateText = &quot;data sent&quot;     Case 7:    StateText = "response receiving"     Case 7:    StateText = &quot;response receiving&quot;     Case 8:    StateText = "response received"     Case 8:    StateText = &quot;response received&quot;     Case 9:    StateText = "disconnecting"     Case 9:    StateText = &quot;disconnecting&quot;     Case 10:    StateText = "disconnected"     Case 10:    StateText = &quot;disconnected&quot;     Case 11:    StateText = "error"     Case 11:    StateText = &quot;error&quot;     Case 12:    StateText = "success"     Case 12:    StateText = &quot;success&quot;     Case Else:    StateText = "that's weird"     Case Else:    StateText = &quot;that's weird&quot;&nbsp;&amp;nbsp;   <nowiki>Private Sub cmdGo_Click()</nowiki>   &lt;nowiki&gt;Private Sub cmdGo_Click()&lt;/nowiki&gt;   <nowiki> inet.Protocol = icHTTP</nowiki>   &lt;nowiki&gt; inet.Protocol = icHTTP&lt;/nowiki&gt;   <nowiki> inet.URL = txtAddress.Text</nowiki>   &lt;nowiki&gt; inet.URL = txtAddress.Text&lt;/nowiki&gt;   <nowiki> txtOut.Text = inet.OpenURL</nowiki>   &lt;nowiki&gt; txtOut.Text = inet.OpenURL&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>End Sub</nowiki>   &lt;nowiki&gt;End Sub&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Private Sub Form_Load()</nowiki>   &lt;nowiki&gt;Private Sub Form_Load()&lt;/nowiki&gt;   <nowiki> txtAddress.Text = "http://wiki.robotz.com"</nowiki>   &lt;nowiki&gt; txtAddress.Text = &quot;http://wiki.robotz.com&quot;&lt;/nowiki&gt;   <nowiki>End Sub</nowiki>   &lt;nowiki&gt;End Sub&lt;/nowiki&gt;   <nowiki>Dim objInet as Inet</nowiki>   &lt;nowiki&gt;Dim objInet as Inet&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Private Sub Form_Load()</nowiki>   &lt;nowiki&gt;Private Sub Form_Load()&lt;/nowiki&gt;   <nowiki>   ' Set a reference to the internet transfer control.</nowiki>   &lt;nowiki&gt;   ' Set a reference to the internet transfer control.&lt;/nowiki&gt;   <nowiki>   Set objInet = Me!axInetTran.Object</nowiki>   &lt;nowiki&gt;   Set objInet = Me!axInetTran.Object&lt;/nowiki&gt;   <nowiki>End Sub</nowiki>   &lt;nowiki&gt;End Sub&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Private Sub cmdWriteFile_Click()</nowiki>   &lt;nowiki&gt;Private Sub cmdWriteFile_Click()&lt;/nowiki&gt;   <nowiki>   Dim b() as Byte</nowiki>   &lt;nowiki&gt;   Dim b() as Byte&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>   ' Set the internet transfer control protocol and URL.</nowiki>   &lt;nowiki&gt;   ' Set the internet transfer control protocol and URL.&lt;/nowiki&gt;   <nowiki>   objInet.Protocol = icHTTP</nowiki>   &lt;nowiki&gt;   objInet.Protocol = icHTTP&lt;/nowiki&gt;   <nowiki>   objInet.URL = "HTTP://www.microsoft.com"</nowiki>   &lt;nowiki&gt;   objInet.URL = &quot;HTTP://www.microsoft.com&quot;&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>   ' Retrieve the HTML data into a byte array.</nowiki>   &lt;nowiki&gt;   ' Retrieve the HTML data into a byte array.&lt;/nowiki&gt;   <nowiki>   b() = objInet.OpenURL(objInet.URL,icByteArray)</nowiki>   &lt;nowiki&gt;   b() = objInet.OpenURL(objInet.URL,icByteArray)&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>   ' Create a local file from the retrieved data.</nowiki>   &lt;nowiki&gt;   ' Create a local file from the retrieved data.&lt;/nowiki&gt;   <nowiki>   Open "C:\Homepage.htm" For Binary Access Write As #1</nowiki>   &lt;nowiki&gt;   Open &quot;C:\Homepage.htm&quot; For Binary Access Write As #1&lt;/nowiki&gt;   <nowiki>   Put #1, , b()</nowiki>   &lt;nowiki&gt;   Put #1, , b()&lt;/nowiki&gt;   <nowiki>   Close #1</nowiki>   &lt;nowiki&gt;   Close #1&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>   MsgBox "Done"</nowiki>   &lt;nowiki&gt;   MsgBox &quot;Done&quot;&lt;/nowiki&gt;   <nowiki>End Sub</nowiki>   &lt;nowiki&gt;End Sub&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Private Sub cmdGetHeader_Click()</nowiki>   &lt;nowiki&gt;Private Sub cmdGetHeader_Click()&lt;/nowiki&gt;   <nowiki>   ' Set the internet transfer control protocol and URL.</nowiki>   &lt;nowiki&gt;   ' Set the internet transfer control protocol and URL.&lt;/nowiki&gt;   <nowiki>   objInet.Protocol = icHTTP</nowiki>   &lt;nowiki&gt;   objInet.Protocol = icHTTP&lt;/nowiki&gt;   <nowiki>   objInet.URL = "HTTP://www.microsoft.com"</nowiki>   &lt;nowiki&gt;   objInet.URL = &quot;HTTP://www.microsoft.com&quot;&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>   ' Open the HTML and display the header information.</nowiki>   &lt;nowiki&gt;   ' Open the HTML and display the header information.&lt;/nowiki&gt;   <nowiki>   objInet.openURL objInet.URL, icByteArray</nowiki>   &lt;nowiki&gt;   objInet.openURL objInet.URL, icByteArray&lt;/nowiki&gt;   <nowiki>   MsgBox objInet.GetHeader</nowiki>   &lt;nowiki&gt;   MsgBox objInet.GetHeader&lt;/nowiki&gt;   <nowiki>End Sub</nowiki>   &lt;nowiki&gt;End Sub&lt;/nowiki&gt;&nbsp;&amp;nbsp;   <nowiki> strExe = "GET " & strSrc & " " & strDst</nowiki>   &lt;nowiki&gt; strExe = &quot;GET &quot; &amp; strSrc &amp; &quot; &quot; &amp; strDst&lt;/nowiki&gt;   <nowiki> With inet</nowiki>   &lt;nowiki&gt; With inet&lt;/nowiki&gt;   <nowiki>   .Protocol = icFTP</nowiki>   &lt;nowiki&gt;   .Protocol = icFTP&lt;/nowiki&gt;   <nowiki>   .UserName = "username"</nowiki>   &lt;nowiki&gt;   .UserName = &quot;username&quot;&lt;/nowiki&gt;   <nowiki>   .Password = "password"</nowiki>   &lt;nowiki&gt;   .Password = &quot;password&quot;&lt;/nowiki&gt;   <nowiki>   .RemoteHost = "ftp.robotz.com"</nowiki>   &lt;nowiki&gt;   .RemoteHost = &quot;ftp.robotz.com&quot;&lt;/nowiki&gt;   <nowiki>   .Execute , strExe</nowiki>   &lt;nowiki&gt;   .Execute , strExe&lt;/nowiki&gt;   <nowiki> End With</nowiki>   &lt;nowiki&gt; End With&lt;/nowiki&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;When you use the OpenUrl method of Microsoft Internet Transfer Control (ITC) to download files from Web servers, the resulting files may not be complete if the server uses "chunked" transfer-encoding to send the HTTP response data. ITC allocates a buffer of 64K bytes and calls InternetReadFile in a loop. Whenever the buffer containing the read data is not full after the API returns, ITC will exit the loop. However, InternetReadFile can return when less than the total number of bytes requested were read into the buffer, which causes the problem. This is the case if the transfer-encoding is chunked.When you use the OpenUrl method of Microsoft Internet Transfer Control (ITC) to download files from Web servers, the resulting files may not be complete if the server uses &quot;chunked&quot; transfer-encoding to send the HTTP response data. ITC allocates a buffer of 64K bytes and calls InternetReadFile in a loop. Whenever the buffer containing the read data is not full after the API returns, ITC will exit the loop. However, InternetReadFile can return when less than the total number of bytes requested were read into the buffer, which causes the problem. This is the case if the transfer-encoding is chunked.   <nowiki>Option Explicit</nowiki>   &lt;nowiki&gt;Option Explicit&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0</nowiki>   &lt;nowiki&gt;Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0&lt;/nowiki&gt;   <nowiki>Public Const INTERNET_OPEN_TYPE_DIRECT = 1</nowiki>   &lt;nowiki&gt;Public Const INTERNET_OPEN_TYPE_DIRECT = 1&lt;/nowiki&gt;   <nowiki>Public Const INTERNET_OPEN_TYPE_PROXY = 3</nowiki>   &lt;nowiki&gt;Public Const INTERNET_OPEN_TYPE_PROXY = 3&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Public Const scUserAgent = "VB OpenUrl"</nowiki>   &lt;nowiki&gt;Public Const scUserAgent = &quot;VB OpenUrl&quot;&lt;/nowiki&gt;   <nowiki>Public Const INTERNET_FLAG_RELOAD = &H80000000</nowiki>   &lt;nowiki&gt;Public Const INTERNET_FLAG_RELOAD = &amp;H80000000&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _</nowiki>   &lt;nowiki&gt;Public Declare Function InternetOpen Lib &quot;wininet.dll&quot; Alias &quot;InternetOpenA&quot; _&lt;/nowiki&gt;   <nowiki>(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _</nowiki>   &lt;nowiki&gt;(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _&lt;/nowiki&gt;   <nowiki>ByVal sProxyBypass As String, ByVal lFlags As Long) As Long</nowiki>   &lt;nowiki&gt;ByVal sProxyBypass As String, ByVal lFlags As Long) As Long&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _</nowiki>   &lt;nowiki&gt;Public Declare Function InternetOpenUrl Lib &quot;wininet.dll&quot; Alias &quot;InternetOpenUrlA&quot; _&lt;/nowiki&gt;   <nowiki>(ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, _</nowiki>   &lt;nowiki&gt;(ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, _&lt;/nowiki&gt;   <nowiki>ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long</nowiki>   &lt;nowiki&gt;ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Public Declare Function InternetReadFile Lib "wininet.dll" _</nowiki>   &lt;nowiki&gt;Public Declare Function InternetReadFile Lib &quot;wininet.dll&quot; _&lt;/nowiki&gt;   <nowiki>(ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, _</nowiki>   &lt;nowiki&gt;(ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, _&lt;/nowiki&gt;   <nowiki>lNumberOfBytesRead As Long) As Integer</nowiki>   &lt;nowiki&gt;lNumberOfBytesRead As Long) As Integer&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>Public Declare Function InternetCloseHandle Lib "wininet.dll" _</nowiki>   &lt;nowiki&gt;Public Declare Function InternetCloseHandle Lib &quot;wininet.dll&quot; _&lt;/nowiki&gt;   <nowiki>(ByVal hInet As Long) As Integer</nowiki>   &lt;nowiki&gt;(ByVal hInet As Long) As Integer&lt;/nowiki&gt;   <nowiki>Private Sub Command1_Click()</nowiki>   &lt;nowiki&gt;Private Sub Command1_Click()&lt;/nowiki&gt;   <nowiki>   Dim hOpen              As Long</nowiki>   &lt;nowiki&gt;   Dim hOpen              As Long&lt;/nowiki&gt;   <nowiki>   Dim hOpenUrl            As Long</nowiki>   &lt;nowiki&gt;   Dim hOpenUrl            As Long&lt;/nowiki&gt;   <nowiki>   Dim sUrl                As String</nowiki>   &lt;nowiki&gt;   Dim sUrl                As String&lt;/nowiki&gt;   <nowiki>   Dim bDoLoop            As Boolean</nowiki>   &lt;nowiki&gt;   Dim bDoLoop            As Boolean&lt;/nowiki&gt;   <nowiki>   Dim bRet                As Boolean</nowiki>   &lt;nowiki&gt;   Dim bRet                As Boolean&lt;/nowiki&gt;   <nowiki>   Dim sReadBuffer        As String * 2048</nowiki>   &lt;nowiki&gt;   Dim sReadBuffer        As String * 2048&lt;/nowiki&gt;   <nowiki>   Dim lNumberOfBytesRead  As Long</nowiki>   &lt;nowiki&gt;   Dim lNumberOfBytesRead  As Long&lt;/nowiki&gt;   <nowiki>   Dim sBuffer            As String</nowiki>   &lt;nowiki&gt;   Dim sBuffer            As String&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>   sUrl = "http://www.microsoft.com"</nowiki>   &lt;nowiki&gt;   sUrl = &quot;http://www.microsoft.com&quot;&lt;/nowiki&gt;   <nowiki>   </nowiki>   &lt;nowiki&gt;   &lt;/nowiki&gt;   <nowiki>   hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)    </nowiki>   &lt;nowiki&gt;   hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)    &lt;/nowiki&gt;   <nowiki>   hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)</nowiki>   &lt;nowiki&gt;   hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)&lt;/nowiki&gt;   <nowiki></nowiki>   &lt;nowiki&gt;&lt;/nowiki&gt;   <nowiki>   bDoLoop = True</nowiki>   &lt;nowiki&gt;   bDoLoop = True&lt;/nowiki&gt;   <nowiki>   While bDoLoop        </nowiki>   &lt;nowiki&gt;   While bDoLoop        &lt;/nowiki&gt;   <nowiki>       sReadBuffer = vbNullString</nowiki>   &lt;nowiki&gt;       sReadBuffer = vbNullString&lt;/nowiki&gt;   <nowiki>       bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)</nowiki>   &lt;nowiki&gt;       bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)&lt;/nowiki&gt;   <nowiki>       sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)</nowiki>   &lt;nowiki&gt;       sBuffer = sBuffer &amp; Left$(sReadBuffer, lNumberOfBytesRead)&lt;/nowiki&gt;   <nowiki>       If Not CBool(lNumberOfBytesRead) Then bDoLoop = False</nowiki>   &lt;nowiki&gt;       If Not CBool(lNumberOfBytesRead) Then bDoLoop = False&lt;/nowiki&gt;   <nowiki>   Wend</nowiki>   &lt;nowiki&gt;   Wend&lt;/nowiki&gt;   <nowiki>   </nowiki>   &lt;nowiki&gt;   &lt;/nowiki&gt;   <nowiki>   Open "C:\Temp\log.txt" For Binary Access Write As #1</nowiki>   &lt;nowiki&gt;   Open &quot;C:\Temp\log.txt&quot; For Binary Access Write As #1&lt;/nowiki&gt;   <nowiki>   Put #1, , sBuffer</nowiki>   &lt;nowiki&gt;   Put #1, , sBuffer&lt;/nowiki&gt;   <nowiki>   Close #1</nowiki>   &lt;nowiki&gt;   Close #1&lt;/nowiki&gt;   <nowiki>   </nowiki>   &lt;nowiki&gt;   &lt;/nowiki&gt;   <nowiki>   If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)</nowiki>   &lt;nowiki&gt;   If hOpenUrl &lt;&gt; 0 Then InternetCloseHandle (hOpenUrl)&lt;/nowiki&gt;   <nowiki>   If hOpen <> 0 Then InternetCloseHandle (hOpen)</nowiki>   &lt;nowiki&gt;   If hOpen &lt;&gt; 0 Then InternetCloseHandle (hOpen)&lt;/nowiki&gt;   <nowiki>End Sub </nowiki>   &lt;nowiki&gt;End Sub &lt;/nowiki&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;
0
edits