如何: 自动发送表单数据到 Internet Explorer

如何: 自动发送表单数据到 Internet Explorer


http://support.microsoft.com/kb/311293/zh-cn


自动化控制器,如 Microsoft Visual Basic 中,可以自动完成 Microsoft Internet Explorer 使用 POST 方法到 HTTP 服务器 (如 Microsoft Internet Information Services [IIS]) 发送数据。本文介绍如何自动执行 Internet Explorer,以执行 Visual Basic.NET 应用程序中的窗体数据。虽然示例说明了在整个 Internet Explorer 应用程序自动化,相同的技术可以应用到 Web 浏览器 ActiveX 控件承载的应用程序中时。


详细信息

以下几种方法都可用于将数据发送到 HTTP 服务器。GET 和 POST 目前最常见的两个。开机自检通常用于表单数据提交到 HTTP 服务器时,该数据超过 GET 方法的最大允许传输限制。此限制通常是 2 千字节 (KB)。

Internet Explorer 公开自动化控制器的 IWebBrowser(App) 接口。IWebBrowser(App) 接口具有导航方法。在接口定义语言 (IDL) 语法 (通用表示从哪两个派生的 Visual Basic 和 Visual C++ 的语法),导航方法如下所示:
HRESULT Navigate([in] BSTR URL, [in] VARIANT* Flags,
[in] VARIANT* TargetFrameName, [in] VARIANT* PostData,
[in] VARIANT* Headers);
				
为了执行开机自检,只有 URL,PostData 和标头参数是相关的。

若要调用到 HTTP 服务器的导航和公告窗体数据,URL 参数必须指定一个有效的地址,PostData 参数必须包含一个字节为单位),包含和标头参数必须包含 BSTR 类型的值,其中包含以下 HTTP 标头:
内容类型: 应用程序/x-电话-窗体-urlencoded
此标头表明张贴的数据根据 HTML 规范中指定的规则进行编码。

请注意 Internet Explorer 脚本对象模型窗口对象也是一个导航的方法。导航方法将只接受一个 URL,并不能对发送到 Web 服务器的数据。

实现方法的步骤

  1. 将下面的 Active Server Pages (ASP) 代码保存到文件中,Navpost.asp,运行 IIS 4.0 或 5.0 版本的 Microsoft Windows NT 4.0 或 Microsoft Windows 2000 服务器上的目录中。目录应识别 IIS 虚拟根目录与执行权限:
    <%@ Language=VBScript %>
     <HTML>
          <%
          cFlavor = Request("Flavor")
          cName = Request("FName")
          %>
          <BODY>
          Hello, <% =cName %>.
          One scoop of <% =cFlavor %> coming right up!
          </BODY>
     </HTML>
    					
  2. 在 Visual Basic.NET 中开始一个新的标准 EXE 项目。默认情况下,将创建 Form1。向 Form1 中添加下列控件:
       Object                     Name                  Caption
       -------------------------------------------------------------------
       Label                      lblName                First Name
       Label                      lblFlavor              Flavor
       CommandButton              cmdSubmit              Submit
       ComboBox                   cboFlavor
       TextBox                    txtName
    					
  3. 项目菜单上,单击添加引用,单击COM选项卡,向下滚动到选择Microsoft Internet 控件(Shdocvw.dll),,然后单击选择
  4. 导入的System.Text命名空间。ASCIIEncoding类提供的方法可将字符串转换为字节数组。
    Imports System.Text
  5. 插入下面的代码将 Form1 类的 Form1.vb 内:
    Private Sub cmdSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click
    
            Dim ie As SHDocVw.InternetExplorer
            Dim vPost As Object
            Dim vHeaders As Object
            Dim cFlavor As String
            Dim cParamFlavor As String
            Dim cParamName As String
            Dim cPostData As String
            Dim cSeparator As String
    
            cFlavor = cboFlavor.Items(cboFlavor.SelectedIndex)
            cParamFlavor = "Flavor="
            cSeparator = "&"
            cParamName = "FName="
    
            cPostData = cParamName & txtName.Text & cSeparator & cParamFlavor & cFlavor
    
            vHeaders = "Content-Type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)
    
       	'Convert the string to post to an array of bytes.
            vPost = ASCIIEncoding.ASCII.GetBytes(cPostData)
    
    	'Create an instance of Internet Explorer and make it visible.
            ie = New SHDocVw.InternetExplorer()
            ie.Visible = True
            ie.Navigate2("http://<web server>/navpost.asp", , , vPost, vHeaders)
    
    End Sub
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
               cboFlavor.Items.Add("Vanilla")
               cboFlavor.Items.Add("Chocolate")
               cboFlavor.Items.Add("Strawberry")
               cboFlavor.SelectedIndex = 0
    
    End Sub	
    					
  6. 修改导航,调用相应的 URL。退出所有正在运行的 Internet Explorer 的实例,然后在运行菜单上,单击开始
  7. 在名字框中键入您的姓名,选择口味,然后单击提交

    Visual Basic 窗体中的数据将张贴到 HTTP 服务器,并在显示的浏览器窗口中显示响应。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值