Получение данных JSON с веб-сайта с использованием Delphi
Есть этот сайт http://www.ingress.com/intel
Чтобы получить доступ к сайту, мы должны войти, используя имя пользователя и пароль.
Получив доступ, сайт использует JSON для своих данных.
Я новичок в этом JSON.
Кто-нибудь может привести общий пример, как получить данные JSON с веб-сайта с использованием Delphi?
Я использую Delphi 7, кстати.
Благодарю.
2 ответа
Это два вопроса.
- как получить файл с HTTP-сервера
- как разобрать строку JSON
Для 1-го вопроса есть много библиотек, некоторые из них:
- Internet Direct aka Indy Sockets (распространяется с Delphi и http://www.indyproject.org/)
- Набор компонентов Интернета, также известный как ICS http://www.overbyte.be/
- араратский синапс http://synapse.ararat.cz/
- UrlListGrabber от JEDI VCL http://jvcl.sf.net/
- Windows
InternetReadFile
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385103.aspx - ... и многое, многое другое.
Например, это пример получения файла из Интернета: http://synapse.ararat.cz/doku.php/public%3Ahowto%3Ahttpgetpage
Или демоверсии другой библиотеки (на самом деле они есть у каждой библиотеки, загрузка файла из HTTP - это обычная задача...):
- http://jvcl.svn.sourceforge.net/viewvc/jvcl/trunk/jvcl/examples/JvProgramVersionCheck/
- http://jvcl.svn.sourceforge.net/viewvc/jvcl/trunk/jvcl/examples/JvUrlListGrabber/
Что касается парсеров JSON, то после загрузки контента из сети это более узкий выбор: JSON - относительно недавняя тенденция, и многие парсеры JSON активно используют функции Delphi 2009+.
Лично я думаю, что вам лучше попробовать использовать JSON-парсер из проекта mORMot. В этом проекте также есть слой HTTP, так что, возможно, вы сможете использовать их код для чтения файлов по HTTP.
Есть примеры или разбор строки JSON:
- http://blog.synopse.info/post/2012/05/03/Custom-JSON-serialization-of-records
- http://blog.synopse.info/post/2012/04/13/Custom-JSON-serialization-of-any-class
- http://blog.synopse.info/post/2012/04/12/Custom-JSON-serialization-of-any-dynamic-array-content
Более подробная информация на 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/
Я подозреваю, что будет довольно сложно войти на этот конкретный веб-сайт из приложения Delphi.
Вам нужно будет войти через учетную запись Google и обрабатывать файлы cookie, как и ожидалось.
Поэтому я боюсь, что вы не сможете использовать любую прямую библиотеку Indy / Synapse / ICS / WinINet для доступа к данным.
Возможно, вам потребуется встроить полноценный браузер в приложение, а затем получить доступ к контенту с точки зрения JavaScript, удаляя браузер из вашего приложения.
Посмотрите на эти компоненты:
TWebBrowser
(т. е. Internet Explorer), доступный в Delphi;- Delphi Chromium.
Затем вам придется проанализировать содержимое JSON. Но вы должны сначала убедиться, что вы можете войти в приложение!