Internet Transfer 控件实现了两种广泛使用的 Internet 协议: 超文本传送协议(HyperText Transfer Protocol)(HTTP) 和文件传送协议(File Transfer Protocol) (FTP)。使用 Internet Transfer 控件可以通过 OpenURL 或 Execute 方法连接到任何使用这两个协议的站点并检索文件。
可见使用Internet Transfer 控件的OpenURL和Execute方法都能实现我们的要求,再来看看这两个方法的不同:
OpenURL 方法以同步方式传输数据。在这里,同步指的是传输操作未完成之前,不能执行其它过程。这样数据传输就必须在执行其它代码之前完成。
而 Execute 方法以异步方式传输数据。在调用 Execute 方法时,传输操作与其它过程无关。这样,在调用 Execute 方法后,在后台接收数据的同时,即可同时执行其它代码。
由于以上的不同,所以在用Execute方法获取数据时,则必须用 StateChanged 事件监视该控件的连接状态,当达到适当的状态时,再调用 GetChunk 方法从控件的缓冲区获取数据。
好了,下边我们就来测试下在Visual Basic中向ASP应用程序发送数据,并显示结果:
·启动Visual Basic 6.0并新建工程,选择"标准EXE"
·在form1上添加一文本框Text1和一按钮Command1
·先将"Microsoft Internet Transfer Control 6.0"部件添加到工具箱中,再添加一实例Inet1到form1中
1.使用OpenURL方法
ASP程序:
<%
Dim username,userpass
username = Request("username")
userpass = Request("userpass")
Response.write("用户名:" & username & chr(10) & "密码:" & userpass)
%>VB代码:
Private Sub Command1_Click()
Text1.Text = Inet1.OpenURL("http://www.mzwu.com/re.asp?username=dnawo&userpass=123456")
End Sub说明:可以看出,在OpenURL方法中只能用GET方式传送数据!
注意:当OpenURL参数为变量时,则声明该变量时必须指明类型,例:Dim sUrl as String,否则调用OpenURL方法时将出错:实时错误'35752' URL 不匹配。
2.使用Execute方法
ASP程序:
<%
Dim username,userpass
username = Request("username")
userpass = Request("userpass")
Response.write("用户名:" & username & chr(10) & "密码:" & userpass)
%>VB代码:
Private Sub Command1_Click()
Dim strURL As String, strFormData As String
strURL = "http://www.mzwu.com/re.asp"
strFormData = "username=dnawo&userpass=123456"
Inet1.Execute strURL, "POST", strFormData, "Content-Type: application/x-www-form-urlencoded"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
If State = 12 Then Text1.Text = Inet1.GetChunk(1024, icString)
End Sub说明:Execute方法的第二个参数说明了发送数据的方法,可以是POST、GET、PUT、HEAD中的一个;第四个参数这边不能为空,否则ASP应用程序将接收不到数据!
评论(0)
暂无评论。