如果有人能够通过SHDocVw.IWebBrowserApp
提供导航方法来向我展示如何发送POST数据的一个很好的例子,我将非常高兴。
例如考虑。
我们应该去的页面是:http://example.com/check.php
并且应该发送名为的用户名和密码的两个输入字段的值。
修改
我正在尝试使用我的C#应用程序使用Windows操作系统上提供的本机Internet Explorer 7或更高版本将HTTP请求发送到特定URL,使用POST方法将用户的用户名和密码传递给一个处理HTTP响应的服务器端页面。
使用IWebBrowserApp
和Navigate
方法,我可以打开Internet Explorer的新窗口/实例并将其发送到特定页面(本地或Web),如果还指定了发送POST数据和自定义标头。
但主要问题是我不知道如何将我的数据写入浏览器携带的POST请求。
我很感激帮助。
答案 0 :(得分:9)
我找到了如何命令IE打开网页并发送一些POST数据。
将名为 Microsoft Internet Explorer控件的COM引用添加到项目中。
然后创建post string
,其中字段及其值由&
分隔,然后将string
转换为byte array
。
最后只需要请求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