Roman Dmitrienko
Roman Dmitrienko

Reputation: 4235

Get web page contents from Firefox in a C# program

I need to write a simple C# app that should receive entire contents of a web page currently opened in Firefox. Is there any way to do it directly from C#? If not, is it possible to develop some kind of plug-in that would transfer page contents? As I am a total newbie in Firefox plug-ins programming, I'd really appreciate any info on getting me started quickly. Maybe there are some sources I can use as a reference? Doc links? Recommendations?

UPD: I actually need to communicate with a Firefox instance, not get contents of a web page from a given URL

Upvotes: 3

Views: 3196

Answers (5)

Andreas Haferburg
Andreas Haferburg

Reputation: 5521

Native messaging enables an extension to exchange messages with a native application installed on the user's computer.

Upvotes: 0

kame
kame

Reputation: 22010

This does what you want.

using System.Net;

var cli = new WebClient();
string data = cli.DownloadString("http://www.heise.de");
Console.WriteLine(data);

Upvotes: -1

Shashi
Shashi

Reputation: 2898

Uri uri = new Uri(url); 
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri.AbsoluteUri);
        req.AllowAutoRedirect = true;
        req.MaximumAutomaticRedirections = 3;
        //req.UserAgent = _UserAgent; //"Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Searcharoo.NET)";
        req.KeepAlive = true;
        req.Timeout = _RequestTimeout * 1000; //prefRequestTimeout 

        // SIMONJONES http://codeproject.com/aspnet/spideroo.asp?msg=1421158#xx1421158xx
        req.CookieContainer = new System.Net.CookieContainer();
        req.CookieContainer.Add(_CookieContainer.GetCookies(uri));

System.Net.HttpWebResponse webresponse = null;

        try
        {
            webresponse = (System.Net.HttpWebResponse)req.GetResponse();
        }
        catch (Exception ex)
        {
            webresponse = null;
            Console.Write("request for url failed: {0} {1}", url, ex.Message);
        }

        if (webresponse != null)
        {
            webresponse.Cookies = req.CookieContainer.GetCookies(req.RequestUri);
            // handle cookies (need to do this incase we have any session cookies)
            foreach (System.Net.Cookie retCookie in webresponse.Cookies)
            {
                bool cookieFound = false;
                foreach (System.Net.Cookie oldCookie in _CookieContainer.GetCookies(uri))
                {
                    if (retCookie.Name.Equals(oldCookie.Name))
                    {
                        oldCookie.Value = retCookie.Value;
                        cookieFound = true;
                    }
                }
                if (!cookieFound)
                {
                    _CookieContainer.Add(retCookie);
                }
            }
string enc = "utf-8"; // default
            if (webresponse.ContentEncoding != String.Empty)
            {
                // Use the HttpHeader Content-Type in preference to the one set in META
                doc.Encoding = webresponse.ContentEncoding;
            }
            else if (doc.Encoding == String.Empty)
            {
                doc.Encoding = enc; // default
            }
            //http://www.c-sharpcorner.com/Code/2003/Dec/ReadingWebPageSources.asp
            System.IO.StreamReader stream = new System.IO.StreamReader
                (webresponse.GetResponseStream(), System.Text.Encoding.GetEncoding(doc.Encoding));

webresponse.Close();

Upvotes: -1

Madhur Ahuja
Madhur Ahuja

Reputation: 22709

It would help if you elaborate What you are trying to achieve. May be plugins already out there such as firebug can help.

Anways, if you really want to develop both plugin and C# application:

Check out this tutorial on firefox extension: http://robertnyman.com/2009/01/24/how-to-develop-a-firefox-extension/

Otherwise, You can use WebRequest or HttpWebRequest class in .NET request to get the HTML source of any URL.

Upvotes: 1

m.edmondson
m.edmondson

Reputation: 30922

I think you'd almost certainly need to write a Firefox plugin for that. However there are certainly ways to request a webpage, and receive its HTML response within C#. It depends on what your requirements are?

If you're requirements are simply receive the source from any website, leave a comment and I'll point you towards the code.

Upvotes: 0

Related Questions