Reputation: 18178
I want to get data from a database and use it to login a user to a web site.
I have a wpf page that holds a web browser control. and I have this code that login user to web site which is written in 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>
How can I do this in wpf? As far as I can understand, I need to create an html and post it to site.
My questions:
1- How can I create such html in code?
2- How can I automatically submit it to the site (assuming I am doing this on constructor of a wpf user control).
Upvotes: 2
Views: 7055
Reputation: 3398
Use the System.Net
namespace, particularly the WebRequest
and WebResponse
objects.
See this previous answer, it should get you started:
How to programmatically fill a form and post a web page
Upvotes: 0
Reputation: 61726
As far as I understand, your goal is to log in and keep the session active inside the WebBrowser
. If so, you have a few options:
First, navigate the WebBrowser
to www.asite.net
, to establish the session.
Then obtain the underlying WebBrowser ActiveX control and use IWebBrowser2::Navigate2
method, it has PostData
parameter which allows to do an HTTP POST request.
Or, inject and execute some JavaScript which would use XHR to post the form the AJAX way.
Or, use WebBrowser.Document
as dynamic
to create a hidden form
element, populate it and submit it, in the same way you'd do with JavaScript
.
Or, use COM XMLHTTP
object to send a POST request, it shares the session with the WebBrowser
.
You could also use some low level UrlMon API to send a POST request.
Updated, here is an example of creating and submitting a :
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");
}
}
Upvotes: 2