Visual Basic使用Internet Transfer控件实现和Web应用程序通信

这次我们要实现的是在Visual Basic 6.0中向WEB应用程序发送数据并显示返回值,这就要用到Internet Transfer 控件,我们先来看看VB 6.0 MSDN中关于该控件的一些说明:

引用内容 引用内容
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 | 引用: 0 | 查看次数: 7671
发表评论
登录后再发表评论!