【问题标题】:How to post data to a web server using wpf webbrowser如何使用 wpf webbrowser 将数据发布到 Web 服务器
【发布时间】:2014-03-26 17:52:54
【问题描述】:

我想从数据库中获取数据并使用它来让用户登录网站。

我有一个包含 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 用户控件的构造函数上执行此操作)。

【问题讨论】:

    标签: c# php wpf webbrowser-control


    【解决方案1】:

    据我了解,您的目标是在WebBrowser 中登录并保持会话处于活动状态。如果是这样,您有几个选择:

    已更新,以下是创建和提交的示例:

    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");
        }
    }
    

    【讨论】:

    • 谢谢。我想知道如何创建一个表单并将其发布(使用您在第四个建议中所说的技术)。您能否详细说明或提供一些参考,以便我对此进行一些研究?
    • @mans,我注意到您最近提出了许多其他与WebBrowser 相关的问题。您可能已经知道如何操作表单了,是吗?
    • 还没有!我正在做一些技巧让它工作,但这是一种丑陋的方式,我喜欢找到更好的方式。在当前的实现中,我阅读网页,查找表单,填写文件,然后使用 javascript,单击所有按钮并将其发回。我想找到一种在我的代码上创建表单并发布它而不从服务器读取它的方法,因为我知道表单的格式是什么。有关如何创建表单并将其发布到服务器的任何建议?
    • @mans,检查更新。这就是我对这个问题所能提供的帮助。
    • 谢谢。我想我可以从这里得到它!
    【解决方案2】:

    使用System.Net 命名空间,尤其是WebRequestWebResponse 对象。

    请参阅这个先前的答案,它应该可以帮助您入门:

    How to programmatically fill a form and post a web page

    【讨论】:

    • 谢谢,但是如果我打开网络浏览器指向相同的网址,它是否仍显示为登录用户?我现在想,webRequest 不会将登录 cookie 传递给 webbrowser。我错了吗?
    • 正确,不同的沙箱。您是否要打开浏览器,自动填写然后发布?
    • 是的,我正在寻找一种方法来打开托管在我的 wpf 应用程序中的网络浏览器,并使用登录信息登录网站并向用户显示输出,以便他可以在那里工作。
    • 查看WebBrowser Control。不过,您可能需要做一些时髦的事情才能发布,例如使用 UI Automation Library 填写表格并发布。
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2012-05-29
    • 2018-04-27
    • 1970-01-01
    • 2016-09-07
    • 2015-07-28
    • 1970-01-01
    相关资源
    最近更新 更多