我处于一个非常奇怪的情况,我昨晚在 4 小时内一直在尝试调试。 它看起来有点像这个未回答的问题。
我在 Windows Phone 8 上开发了一个片段,其中下载了 json 数据。
在我的代码段中,我使用以下方法从http://api.mtgox.com/api/2/BTCUSD/money/ticker下载数据:
- 网络客户端
- HttpWebRequest
- 网络浏览器(不可见)
- WebClient 扩展处理 cookie
在所有四种情况下,它都在我的模拟器上运行。没有延迟,没有超时,没有 403,没有 404。
当我的一个朋友在他的模拟器上运行此代码时,它似乎在 7-8 秒后超时并出现 TargetInvocationException,并且 InnerException 包含一条NotFound
消息。但是在他的模拟器上,任何其他网站都可以。
这意味着发出请求:GET /api/2/BTCUSD/money/ticker 主机:data.mtgox.com 连接:keep-alive 等。
但是根据我对 Wireshark 所做的三重、四重、非常顽固的验证,在此获取之后没有任何反应。它是空白的。所以它超时。
请求失败的 PC 上没有防病毒或防火墙。该页面在桌面浏览器中加载良好。在模拟器上,来自其他网站的任何其他 json 请求都可以工作。
所以这个特定的地址在特定的模拟器上不起作用。
我在脑海中摸索 CCNA 知识,但找不到任何理由为什么网站会拒绝响应模拟器并接受响应另一个模拟器?
奇怪的是,非工作 PC 上的代码片段在添加用户代理后开始在 C# 桌面控制台应用程序中工作,但在他的 WP 模拟器中,这种解决方法在上述四种方法中的任何一种中都不起作用。疯狂的是发送的数据包是完全一样的。