2011-06-28 215 views
0

我使用這個代碼從服務器下載文件並解析JSON對象的數據:C#文件下載問題

 WebClient wcl = new WebClient(); 
     Uri url = new Uri(tickurl); 
     string srlz = wcl.DownloadString(url); 
     var dict = (new JavaScriptSerializer()).Deserialize<Dictionary<string, dynamic>>(srlz); 

當我用它來與http://deepbit.net/api/ +我的令牌(URI返回JSON數據),它工作得很好。

但隨着功能(數據下載)的第三線https://mtgox.com/code/data/ticker.php它stucks。

我在做什麼錯了?這兩個URL都返回相同的JSON格式的數據。

[添加]它不是以https發行,此代碼的工作不夠好,與其他HTTPS服務。我想知道這是否會成爲SSL證書的問題。

解決:關閉SSL證書驗證。感謝

+0

您是否嘗試過尋找在Wireshark中看到的是涉及哪些業務? –

+0

也許是因爲它是一個https網址? – Fender

回答

2

我懷疑這是一個安全問題由於失敗。當我與wget取,我得到:

ERROR: certificate common name www.mtgox.com' doesn't match requested host name mtgox.com'

這很好,當我使用了--no-check-certificate標誌wget取。

我不知道你是否能說服WebClient不檢查證書......但一個更好的選擇顯然是拿到證書固定。

或者,也可以嘗試使用此網址:https://www.mtgox.com/code/data/ticker.php - 請注意位於前面的www。那在wget沒有任何問題。

+0

謝謝!我關閉了SSL證書檢查,它的工作原理:)雖然這可能是不安全的 –

+0

@Steel:您是否嘗試使用第二個URL? –

+0

剛剛嘗試過,不起作用。解決方案上部似乎是最合適的,稍後會更深入 –

1

的網址:https://mtgox.com/code/data/ticker.php甚至沒有在瀏覽器中打開。它開始下載'ticker.php'文件。您的服務器配置錯誤。代碼很好。很可能服務器沒有正確配置爲將.php文件作爲腳本處理。

+0

謝謝,但它不是我的服務器,Chrome似乎打開了它。 –

+0

Firefox不。 –

+0

也許它配置正確,但只是作爲下載服務請求。不知道WebClient如何處理它們 – Fender

1

這是一個像Jon Skeet所說的證書錯誤。

看一看這裏找到一個簡單的解決方案

WebClient + HTTPS Issues

你不應該使用這個對所有請求,只用於調試