Create a SSL WebRequest with C#

43,548

Solution 1

This looks like what you're after How to use HTTP GET request in C# with SSL? (protocol violation)

But changing "http" to "https" might be a good starting point!
Then, apparently, setting a ServicePointManager.ServerCertificateValidationCallback as shown in 2 of the replies to the above post.

EDIT

Add

string ua = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0";

then

client.Headers.Add(HttpRequestHeader.UserAgent, ua);

Then parse the Location header of the redirected result.

Solution 2

This web site uses 302 redirects to bring you to the SSL page.

The WebClient .NET class is a smart class that automatically follows the redirects. It uses the HttpWebRequest class and sets the AllowAutoRedirect to true.

So if you issue your request to the original URL, the WebClient steps over the redirects (using new requests) while the result is 302 (some kind of redirect). If the result code is different, you will get the result. It looks like a single http request, but it does 2 http and 1 https calls.

You have to set the user agent in this case as shunty posted it previously, because the remote site not likes the .NET's default user agent: none.

Solution 3

Check this msdn link HTTP Security and ASP.NET Web Services

By default, the Require secure channel (SSL) check box is clear; select it to require SSL. SSL supports both 40-bit and 128-bit encryption. The more bits used by the encryption, the harder it is to break it and figure out what the original bits were.

Once you have the resource set up to require SSL for communications, any messages sent between the sender and receiver will be encrypted and signed. This means that outside parties cannot read the contents of the messages. If an outside party changes the bytes in the message, the message receiver can detect it.

You Should need some Credential or Certificate information of run your code perfectly.

You could use the RemoteCertificateValidationCallback delegate for validating the SSL certificate

Check these links for code help:

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

How to use HTTP GET request in C# with SSL? (protocol violation)

How do I use WebRequest to access an SSL encrypted site using https?

Share:
43,548
Alexei
Author by

Alexei

Updated on December 02, 2020

Comments

  • Alexei
    Alexei over 3 years

    I'm making a code that reads the a page and downloads it contents programmatically, but it does not work same way as a browser. Note that I'm also using cookies string.

    my code is:

    string strUrl = "http:" + "//mgac.webex." + "com";
    string cookies_str = "vSeg=post_attendee; s_nr=1321305381566-New; s_lv=1321305381566; s_vnum=1322686800567%26vn%3D1; galaxyb_wl=R2355168776; JSESSIONID=Qlq1TR7Hf09KTsGHr4vv2GnTFF0NGRlLmGyYmMvzY5M29pbZ8yNp!31020270; DetectionBrowserStatus=3|1|32|1|4|2; CK_LanguageID_503319=1; CK_TimeZone_503319=4; CK_RegionID_503319=2; vSeg=post_attendee; s_nr=1321305381566-New; s_lv=1321305381566; s_vnum=1322686800567%26vn%3D1; galaxyb_wl=R2355168776; JSESSIONID=Qlq1TR7Hf09KTsGHr4vv2GnTFF0NGRlLmGyYmMvzY5M29pbZ8yNp!31020270;";
    string other_saved_cookies = "screenWidth=1280; CK_CDNHostStatus=akamaicdn.webex.com|1322367753273|1";
    
    string s;
    using (WebClient client = new WebClient())
    {
        client.UseDefaultCredentials = true;
        client.Headers.Add(HttpRequestHeader.Cookie, cookies_str);
        s = client.DownloadString(strUrl);
    }
    

    I get this answer: "The Page Cannot be found..."

    when I scan the Request with Fiddler, my browser recieves the same answer, after that he makes a new request to using SSL to same host.

    How can I make exactly same request to receive content like a browser

    Where is the information that tells client: "a SSL connection is required" ?