2013-04-11 58 views
0

有本網站http://www.ingress.com/intel使用Delphi從網站獲取JSON數據

要訪問網站,我們必須使用用戶名和密碼登錄。

訪問後,該網站使用JSON作爲其數據。

我是新來的這個JSON的東西。

任何人都可以舉一個通用示例如何從使用Delphi的網站獲取JSON數據?

我使用的是Delphi 7。

謝謝。

+1

TIdHTTP.Get就是你要找的東西,關於JSON,把它想象成一個「文本文件」,你需要弄清楚如何做「登錄」(你需要打什麼位置以及什麼是用戶名和密碼的參數名稱),在TIdHTTP中啓用「保留cookie」,最後,點擊返回JSON「文件」的鏈接。 – ComputerSaysNo 2013-04-11 11:53:53

+0

http://stackoverflow.com/q/10323145/33732 – 2013-04-11 12:19:56

+3

@Arioch可能重複,基於我對代碼的快速閱讀,Superobject不需要泛型。如果可用,它將使用泛型和新的RTTI。 [修訂版51](https://code.google.com/p/superobject/source/detail?r=51)是專門爲Delphi 7兼容的。 – 2013-04-11 12:50:32

回答

9

這是兩個問題。

  1. 如何從HTTP服務器文件
  2. 如何解析JSON字符串

對於第一個問題,有很多的圖書館,一些:

  1. 互聯網直又名Indy套接字(與德爾福和http://www.indyproject.org/分銷)
  2. 互聯網組件套件又名ICS http://www.overbyte.be
  3. 阿拉拉特突觸http://synapse.ararat.cz/
  4. UrlListGrabber從JEDI VCL http://jvcl.sf.net
  5. 的Windows InternetReadFilehttp://msdn.microsoft.com/en-us/library/windows/desktop/aa385103.aspx
  6. ......和許多許多。

例如,這是從互聯網上獲取文件的樣本:http://synapse.ararat.cz/doku.php/public:howto:httpgetpage

或者另一個lib中的演示(實際上每解放運動在他們,從HTTP加載文件是如此常見的任務...):


對於JSON解析器,從網上下載內容後,這是一個較窄的選擇:JSON是一個相對較新的趨勢,許多JSON解析器大量使用Delphi 2009+的功能。我個人認爲你最好試着使用來自mORMot項目的JSON解析器。 該項目也有HTTP層,所以也許你可以使用他們的代碼通過HTTP讀取文件。

有實例或分析JSON字符串:在http://synopse.info/

更多信息和http://blog.synopse.info/tag/JSON

他們也有這與敏感社區。

SuperObject雖然最初是以泛型爲基礎構建的(實際上自Delphi 2010開始工作),但它也具有Delphi 7的兼容性,儘管它的某些功能不起作用。見http://code.google.com/p/superobject/wiki/first_steps

而你總是可以尋找更多的圖書館對http://www.torry.net

+0

這不是一個答案(: – ComputerSaysNo 2013-04-11 11:54:35

+0

@ComputerSaysNo這是最好的可以完成的,因爲「問題」也不是真正的問題。 – 2013-04-11 14:27:27

2

我懷疑這將是相當困難的登入從Delphi應用程序這個特定的網站。

您需要通過谷歌賬號進行登錄,並按預期處理cookies。

因此,恐怕您將無法使用任何直接的Indy/Synapse/ICS/WinINet庫來訪問數據。

您可能需要在應用程序中嵌入完整的瀏覽器,然後從JavaScript角度訪問內容,從應用程序中遠程瀏覽瀏覽器。

看看這些組件:

  • TWebBrowser(即互聯網瀏覽器)爲可用在Delphi;
  • Delphi Chromium

然後你將不得不解析JSON內容。但是您必須首先確保您可以登錄應用程序!