2011-06-28 76 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

你不应该使用这个对所有请求,只用于调试