C# WebClient下载字符串https

5
在网络浏览器中,我可以正常加载以下URL: https://security.ultimatxxxx.com:443/Serverstatus.ashx 但当我这样做时:
Webclient.DownloadStringAsync("https://security.ultimatxxxx.com:443/Serverstatus.ashx");

为了测试目的,您可以调用:ultimate-eur而不是ultimatxxxx

它无法正常工作,但是当我加载没有https的普通URL时,我没有任何问题。我需要添加哪个参数才能使Webclient也能下载字符串?

我想在Monotouch中使用该功能,但语言是C#。


它是否会抛出任何异常?如果是,请在帖子中添加它。 - HatSoft
2个回答

8
如果您希望接受所有证书,您需要在发出请求之前设置证书检查:
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

这将接受所有证书。

如果您需要实际检查证书,请执行以下操作:

ServicePointManager.ServerCertificateValidationCallback =
    (sender, certificate, chain, sslPolicyErrors) => 
    {
        //to check certificate
    };

嗨,我应该把这个添加到哪里?或者我该如何将它传递给Web客户端? - Ploetzeneder
服务点管理器在WindowsPhone上不可用。是否有WindowsPhone应用程序的解决方案? - Zack Weiner

4

可能的一个原因是一些网站会针对不同的浏览器提供不同的结果。

您可以尝试提供浏览器信息,以便模拟来自浏览器的请求。

var client = new WebClient();
client.Headers["User-Agent"] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15";
string download = client.DownloadString("https://security.ultimatxxxx.com:443/Serverstatus.ashx");

或者

您没有绑定Async调用的completedEvent


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接