2013-04-09 34 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