Search code examples
c#shdocvw

IWebBrowserApp.Navigate() How to send Post Data


I would be very glad if someone could show me a good example of how to send POST data with the Navigate Method, available through SHDocVw.IWebBrowserApp.

Considering for example.

That the page were we should go is: http://example.com/check.php

And should send the values of two input fields named: username and password.

EDIT

I'm attempting with my C# App to use the native Internet Explorer version 7 or higher, available on Windows OS, to send a HTTP Request to a specific URL, passing using the POST method the username and password of an user to a server side page that would handle the HTTP Response.

With IWebBrowserApp and the Navigate method I'm able to open a new window/instance of Internet Explorer and send it to a specific page (local or in the web), and if specified also send POST data and custom headers.

But the main problem its that i don't know how to write my data into a POST request to be carried by the browser.

I would appreciate help.


Solution

  • I've found how to order IE to open a webpage and send some POST data.

    • Add a COM Reference named Microsoft Internet Explorer Controls to the project.

    • Then create the post string with the field and its value separated by &, and then convert that string into a byte array.

    • And in the end just had to request IE to Navigate to the url, and also send the Post Data converted into a byte array, and then add the same Header that its added when we submit a form.

    Here goes:

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

    NOTE:

    To try if this works. Don't forget that your server side page would have to write/echo the Post fields named: username and password.

    PHP Code Example:

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

    ASP Code Example:

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

    And the page would display something like this:

    fabio 123