IWebBrowserApp.Navigate()如何发送Post Data

时间:2010-07-28 00:03:30

标签: c# shdocvw

如果有人能够通过SHDocVw.IWebBrowserApp提供导航方法来向我展示如何发送POST数据的一个很好的例子,我将非常高兴。

例如考虑。

我们应该去的页面是:http://example.com/check.php

并且应该发送名为的用户名和密码的两个输入字段的值。

修改

我正在尝试使用我的C#应用​​程序使用Windows操作系统上提供的本机Internet Explorer 7或更高版本将HTTP请求发送到特定URL,使用POST方法将用户的用户名和密码传递给一个处理HTTP响应的服务器端页面。

使用IWebBrowserAppNavigate方法,我可以打开Internet Explorer的新窗口/实例并将其发送到特定页面(本地或Web),如果还指定了发送POST数据和自定义标头。

但主要问题是我不知道如何将我的数据写入浏览器携带的POST请求。

我很感激帮助。

1 个答案:

答案 0 :(得分:9)

我找到了如何命令IE打开网页并发送一些POST数据。

  • 将名为 Microsoft Internet Explorer控件的COM引用添加到项目中。

  • 然后创建post string,其中字段及其值由&分隔,然后将string转换为byte array

    < / LI>
  • 最后只需要请求IE导航到url,并将发布的数据转换为byte array,然后添加其添加的相同标题我们提交表格。

这里是:

using SHDocVw; // Don't forget

InternetExplorer IEControl = new InternetExplorer();
IWebBrowserApp IE = (IWebBrowserApp)IEControl;
IE.Visible = true;

// Convert the string into a byte array
ASCIIEncoding Encode = new ASCIIEncoding();
byte[] post = Encode.GetBytes("username=fabio&password=123");

// The destination url
string url = "http://example.com/check.php";

// The same Header that its sent when you submit a form.
string PostHeaders = "Content-Type: application/x-www-form-urlencoded";

IE.Navigate(url, null, null, post, PostHeaders);

注意:

尝试这是否有效。不要忘记您的服务器端页面必须写/回显名为的用户名和密码的帖子字段。

PHP代码示例:

<?php
echo $_POST['username'];
echo " ";
echo $_POST['password'];
?>

ASP代码示例:

<%
response.write(Request.Form("username"))
response.write(" " & Request.Form("password"))
%>

页面将显示如下内容:

  

fabio 123