我想从数据库获取数据并使用它来让用户登录到网站。
我有一个包含 Web 浏览器控件的 wpf 页面。我有这样的代码,用于将用户登录到用 php 编写的网站:
<form action='http://www.asite.net/index.php' method='post' name='frm'>
<?php
$user = $_GET['u'];
$pass = $_GET['p'];
echo "<input type='text' name='user' value='$user'>";
echo "<input type='text' name='pass' value='$pass'>";
?>
<input type='submit' name='submit' value='submit'>
</form>
我怎样才能在wpf中做到这一点?据我所知,我需要创建一个 html 并将其发布到网站。
我的问题:
1-如何在代码中创建这样的html?
2-如何自动将其提交到站点(假设我在 wpf 用户控件的构造函数上执行此操作)。
据我了解,您的目标是登录并保持会话在WebBrowser
。如果是这样,您有几个选择:
首先,导航WebBrowser
to www.asite.net
,建立会话。
然后获取底层 WebBrowser ActiveX 控件 https://stackoverflow.com/a/18289217/1768303并使用IWebBrowser2::Navigate2 http://msdn.microsoft.com/en-us/library/aa752134%28v=vs.85%29.aspx方法,它有PostData
允许执行 HTTP POST 请求的参数。
Or, 注入并执行一些 JavaScript https://stackoverflow.com/a/19002650/1768303这将使用XHR http://msdn.microsoft.com/en-us/library/ie/ms535874%28v=vs.85%29.aspx以 AJAX 方式发布表单。
Or, use WebBrowser.Document
as dynamic
创建一个隐藏的form
元素,填充它并提交它,就像您使用的方式一样JavaScript
.
Or, use COM XMLHTTPobject http://msdn.microsoft.com/en-us/library/ms759148%28v=vs.85%29.aspx发送 POST 请求,它与WebBrowser
.
你也可以使用一些低级 UrlMon API https://stackoverflow.com/a/19764708/1768303发送 POST 请求。
Updated,以下是创建和提交 的示例:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
NavigatedEventHandler handler = null;
handler = delegate
{
this.webBrowser.Navigated -= handler;
dynamic document = this.webBrowser.Document;
var form = document.createElement("form");
form.action = "http://requestb.in/tox7drto";
form.method = "post";
var input = document.createElement("input");
input.type = "text";
input.name = "name_1";
input.value = "value_1";
form.appendChild(input);
input = document.createElement("input");
input.type = "submit";
form.appendChild(input);
document.body.appendChild(form);
input.click();
};
this.webBrowser.Navigated += handler;
this.webBrowser.Navigate("about:blank");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)