• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 230
  • Last Modified:

Problem in using AxWebBrowser component in C# application

I have a C# windows application form which embeds a AxWebBrowser component in it.
I specified the html file URL(a.html) in the navigate method of the component.

In the body onload method of the a.html I have a automatic redirect to some other html file(b.html).

Now I want to capture the text or the html of the redirected html file(b.html) . I cannot specify this file name(b.html) in the navigate method as I have to pass some parameters from the first file so I can specify only the first file name(a.html) in the navigate method of the AxWebBrowser component.

I did try with the following code. I try to use the navigate event of the AxWebBrowser component

  private void axWebBrowser1_NavigateComplete2(object sender, AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event e)
                  doc = (mshtml.IHTMLDocument2)axWebBrowser1.Document;


The above method is retrieving only the contents of the a.html. Is there a way to retrieve the contents of the b.html without actually specifying the url of b.html file in the navigate method.

Or is there a way in C# to use the HTTPWebResponse related objects to accomplish the above scenario(Get the contents of the second html file automatically).

Somebody please help in this.
  • 2
1 Solution
I don't know about the AxWebBrowser autoredirecting, but you can definitely do this with the HttpWebRequest etc objects. When you say "there is an automatic redirect" is that a 302 response from the browser, or is it a meta http-equiv="REFRESH" tag in the page head? If it is a 302 then the HttpWebRequest method is very simple. Either way I can post a quick example if you want it.

felixmosesjAuthor Commented:
It is not refresh tag and I am not sure about the 302 redirect. The code in the a.html file is this

function postForm()

<body onload="postForm();" MS_POSITIONING="GridLayout">
            <form id="Form1" name="Form1" method="post" action="https://localhost/b.html" language="javascript" id="Form1">
Some important Statements Here

Now I want to get the response of the b.html file. Directly I should not get the response of the b.html. First my a.html file should load and then it gets automatically redirected to b.html and finally I should get the text or html content of b.html file. If possible please post a sample code.
Ok, well you aren't going to have quite such an easy ride, but you can do it with HttpWebRequest. I'll be able to get code to you, but not until Tuesday next week - I'm on holiday to then. Until I do, the basic premise will be to use the HttpWebRequest to request a.html. You will get the response from a.html and include that in a POST request which you will put into a second HttpWebRequest, this will return b.html.

To do this, I would first install Fiddler (if anyone is counting how many times I mention Fiddler, no I have no conflict-of-interest here ;) I just think it invaluable), and then open a.html and watch it redirect to b.html in a browser. That will allow you to recreated the form POST that is generated from a.html submitting it's form onload. You can then use this with the HttpWebRequest objects.

I just started to hack out the code, and realised it will take me more than 5 minutes. Google gave me these Urls for doing it, they are a bit rough, but they are exactly right:

To get "a.html"
Then you need to read the values out that you want to post back , put them in a post string, and use:
to do the post.

We can work though something solid when I'm back next week, but let me know if that helps or not
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now