2012-07-04 24 views
4

在web瀏覽器,我通常可以加載以下網址: https://security.ultimatxxxx.com:443/Serverstatus.ashxC#Web客戶端下載地址字符串HTTPS

當我做到這一點:

Webclient.DownloadStringAsync("https://security.ultimatxxxx.com:443/Serverstatus.ashx"); 

出於測試目的,你可以撥打:ultimate-eur代替ultimatxxxx

它不起作用,但是當我加載一個沒有https的普通URL時,我沒有任何問題。 我必須添加哪個參數,以便Webclient也可以下載字符串?

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

+0

它會拋出任何異常嗎?如果是的話請在後加上 – HatSoft

+0

我收到了:請求超時 – Ploetzeneder

回答

8

如果你只是希望接受所有證書,你需要設置證書檢查,你讓你的請求之前:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

這將接受所有證書。

雖然 - 如果你需要實際檢查證書做這樣的事情:

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

嗨,我在哪裏添加這個?或者我如何將此內容傳遞給Web客戶端 – Ploetzeneder

+0

在發出請求之前,只需添加該行代碼即可。 –

+0

Service Point Manager在WindowsPhone中不可用。有沒有WindowsPhone應用程序的解決方案? –

1

一個可能的原因可能是事實,有些網站提供不同的結果,不同的瀏覽器。

您可以嘗試提供瀏覽器信息以假裝來自瀏覽器的呼叫。

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"); 

或者

你還沒有綁定Aysnc呼叫completedEvent