2013-04-09 74 views
1

我想制作一个控制台应用程序,它可以查询网站的数据,处理数据,然后显示它。即 - 访问http://data.mtgox.com/,然后显示货币X到货币Y的汇率。如何从网站获取数据并在C中处理它#

我能够通过WebClient和StreamReader获取大量文本字符串(虽然我不太了解它们),我想象我可以将字符串修剪成我想要的,然后用延迟循环查询,以便无需再次运行程序即可更新数据。然而,我只是在猜测,似乎有一种比这更有效的方式来访问数据。我错过了什么吗?

编辑 - 普遍的共识似乎是使用JSON来做到这一点;这正是我期待的!多谢你们!

+2

http://www.codeproject.com/Tips/397574/Use-Csharp-to- get-JSON-data-from-the-web-and-map-i – 2013-04-09 21:39:55

+0

'我错过了什么吗?'代码!!你对我们有什么期望?为你写吗? – I4V 2013-04-09 21:42:27

+0

您需要为您的项目添加某种[Web Reference](http://msdn.microsoft.com/zh-cn/library/bb628649.aspx)。 – jp2code 2013-04-09 21:43:06

回答

1

看起来,该网站提供了一个提供JSON数据的API。如果您不知道需要查看哪些JSON,但基本上可以创建代表此JSON的对象模型。如果您有最新版本的VS2012,您可以复制JSON并右键单击,点击特殊粘贴,然后粘贴为类。这会自动为您生成模型。然后,您联系API,检索JSON,将其反序列化到您的模型中,然后从那里做任何您想要的。

+0

+1,网站通常使用流行的编程语言提供示例代码。 – Xaqron 2013-04-09 21:44:30

+0

谢谢!我参考了Lasse为此发布的链接。我正在使用VS2010,并且在解决如何安装或使用JSON时遇到了一些问题。任何建议,将不胜感激。 – user2088808 2013-04-09 21:50:18

+0

@ user208880 JSON不是你安装的东西。这是在整个网络中传输数据的标准方式。也许阅读[this](http://www.w3schools.com/json/default.asp)。因此,例如,如果我有JSON {Name}:“Bob”, “Age”:21 },那么我可以将它序列化为一个Person对象,它具有name属性和age属性。像下面提到的icemanind一样,请查看[JSON.NET](http://james.newtonking.com/projects/json-net.aspx),以便在.NET中轻松序列化和反序列化JSON – spy890 2013-04-09 21:55:43

0

一个更好的办法:

string url = "http://data.mtgox.com/"; 
HttpWebRequest myWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); 
myWebRequest.Method = "GET"; // This can also be "POST" 
HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse(); 
StreamReader myWebSource = new StreamReader(myWebResponse.GetResponseStream()); 
string myPageSource = string.Empty; 
myPageSource= myWebSource.ReadToEnd(); 
myWebResponse.Close(); 

// Do something with the data in myPageSource 

一旦你的数据,看JSON.NET解析它

+0

'我能够通过WebClient和StreamReader获得大量文本字符串''您唯一的补充是:'使用Json.Net'。所以无非是一个评论。 – I4V 2013-04-09 21:45:28

+0

@ I4V - 使用WebClient只是为了从网站“获取数据”而造成的巨大资源浪费。我向他展示了一种更好的方式。更有效的方法 – Icemanind 2013-04-09 21:46:37

+0

'使用WebClient是一个巨大的资源浪费'为什么?证明给我看? – I4V 2013-04-09 21:47:02