Google Finance, как получить данные JSON в потоковом режиме? - PullRequest
3 голосов
/ 13 июня 2011

Я пытался объяснить это ранее, но, очевидно, не удалось!

Итак, если у вас открыт график финансов Google, например:

http://www.google.com/finance?q=INDEXNASDAQ:.IXIC

Я хотел бы как-то использовать объект (HttpWebRequest) в C #, чтобы я мог получить небольшие данные, которые Google отправляет на страницу, чтобы обновить график.

Друг упомянул, что это был JSON?

Я пытался использовать следующий пример кода, но даже когда я установил для свойства keep alive значение «true», он все равно не работал бы:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.keepalive.aspx#Y369

1 Ответ

0 голосов
/ 14 июня 2011

Вам также необходимо изменить строку примера, в которой для свойства Connection установлено значение Close.Закомментируйте эту строку (наряду с сохранением для свойства keep-alive значения true):

myHttpWebRequest2.Connection = "Close";

Вы сделаете это, и ваш пример должен работать нормально.

Что касается получения данных и использования HttpWebRequest чтобы работать с этим, вы можете сделать это.Возвращенные данные не в формате JSON - они выглядят как прямой текст, и я предполагаю, что JavaScript анализирует их в Google.(Я не проверял JavaScript на странице Google Finance, но это мое предположение.)

Используя Fiddler, отклик с этого URL:

http://www.google.com/finance/getprices?q=.IXIC&x=INDEXNASDAQ&i=120&p=10m&f=d,c,v,o,h,l&df=cpct&auto=1&ts=1307994768643

выглядиткак это:

EXCHANGE%3DINDEXNASDAQ
MARKET_OPEN_MINUTE=570
MARKET_CLOSE_MINUTE=960
INTERVAL=120
COLUMNS=DATE,CLOSE,HIGH,LOW,OPEN,VOLUME
DATA=
TIMEZONE_OFFSET=-240
a1307994120,2641.12,2641.12,2639.96,2640.01,0
1,2638.76,2642.14,2638.76,2641.13,0
2,2638.95,2640.54,2638.74,2638.79,0
3,2639.85,2640.01,2638.08,2638.95,0
4,2640.07,2640.87,2639.31,2639.88,0
5,2640.31,2640.48,2639.42,2640.08,0
6,2641.09,2641.09,2640.3,2640.31,0

Немного загадочно, но вы можете видеть, как линия COLUMNS совпадает с данными внизу.Кроме того, параметр строки запроса f, по-видимому, указывает, какие столбцы нужно вернуть (d = дата, c = закрыть, v = объем, o = открыть, h = высокий, l = низкий).

EDIT : Я должен упомянуть, что использованный мной URL-адрес отправляется со страницы финансового графика для получения обновленных данных - этот URL-адрес запрашивается через регулярные промежутки времени с помощью такого инструмента, как Fiddler.Данные ответов, которые я вставил выше, также выводятся образцом приложения из MSDN.

Но комментируя, что одна строка в примере из MSDN и небольшая возня с Fiddler должны дать вам данные и подсказки, которые вам нужныпроанализируйте результат, полученный с этого URL.

Надеюсь, это поможет!

PS - моя первая строка в моем модифицированном примере MSDN выглядит так:

HttpWebRequest myHttpWebRequest1 = (HttpWebRequest)WebRequest.Create("http://www.google.com/finance/getprices?q=.IXIC&x=INDEXNASDAQ&i=120&p=10m&f=d,c,v,o,h,l&df=cpct&auto=1&ts=1307994768643");

Iсделал аналогичное изменение с другим WebRequest вызовом чуть ниже в примере ... кроме этого, я ничего не изменил в этом примере.

...