使用C#创建SSL WebRequest

Ale*_*xei 3 c# https httpwebrequest webbrowser-control

我正在编写一个代码来读取页面并以编程方式下载内容,但它与浏览器的工作方式不同.请注意,我也使用cookie字符串.

我的代码是:

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);
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个答案:"无法找到页面......"

当我用Fiddler扫描请求时,我的浏览器收到相同的答案,之后他向同一主机发出了使用SSL的新请求.

如何使用完全相同的请求来接收浏览器等内容

告诉客户的信息在哪里:"需要SSL连接"?

shu*_*nty 6

这看起来像你在追求 如何在C#中使用SSL的HTTP GET请求?(违反协议)

但将"http"更改为"https"可能是一个很好的起点!
然后,显然,设置一个ServicePointManager.ServerCertificateValidationCallback,如上面帖子的2个回复中所示.

编辑

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

然后

client.Headers.Add(HttpRequestHeader.UserAgent, ua);
Run Code Online (Sandbox Code Playgroud)

然后解析重定向结果的Location标头.