首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WebRequest创建SSL WebRequest

使用WebRequest创建SSL WebRequest
EN

Stack Overflow用户
提问于 2011-11-27 10:19:04
回答 4查看 44.1K关注 0票数 3

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

我的代码是:

代码语言:javascript
复制
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);
}

我得到了这样的回答:“找不到这一页.”

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

我怎样才能像浏览器一样发出完全相同的请求来接收内容?

告诉客户端:“需要一个SSL连接”的信息在哪里?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-27 10:30:42

这看起来像你想要的如何在C#中使用HTTP请求?(违反议定书)

但是将"http“改为"https”可能是一个很好的起点!

然后,显然,设置一个ServicePointManager.ServerCertificateValidationCallback,如对上述帖子的两个答复中所示。

编辑

添加

代码语言:javascript
复制
string ua = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0";

然后

代码语言:javascript
复制
client.Headers.Add(HttpRequestHeader.UserAgent, ua);

然后解析重定向结果的位置标头。

票数 6
EN

Stack Overflow用户

发布于 2011-12-01 10:33:54

此网站使用302重定向将您带到SSL页面。

WebClient .NET类是一个自动跟踪重定向的智能类。它使用HttpWebRequest类并将AllowAutoRedirect设置为true。

因此,如果您将请求发送到原始URL,则当结果为302 (某种类型的重定向)时,WebClient将跨重定向(使用新请求)。如果结果代码不同,您将得到结果。它看起来像一个单独的http请求,但它执行2个http和1个https调用。

在这种情况下,您必须设置用户代理,因为远程站点不喜欢.NET的默认用户代理: none。

票数 2
EN

Stack Overflow用户

发布于 2011-11-27 12:13:31

检查这个msdn链接HTTP安全和ASP.NET网络服务

默认情况下,“要求安全通道( SSL )”复选框是清除的;选择它可以要求SSL。SSL支持40位和128位加密.加密使用的比特越多,就越难破解它并找出原始比特是什么。 一旦将资源设置为需要SSL进行通信,发送方和接收方之间发送的任何消息都将被加密和签名。这意味着外部方无法读取消息的内容。如果外部方更改了消息中的字节,则消息接收方可以检测到它。

您应该需要一些完整运行代码的凭据或证书信息。

可以使用RemoteCertificateValidationCallback委托来验证SSL证书。

请查看这些链接以获得代码帮助:

代码语言:javascript
复制
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

如何在C#中使用HTTP请求?(违反议定书)

如何使用WebRequest使用https访问SSL加密站点?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8284859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档