Google Finance, как получить потоковую передачу данных JSON?

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

Итак, если у вас открыт график финансов 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

1 ответ

Вам также нужно изменить строку примера, которая устанавливает 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 Параметр querystring, кажется, указывает, какие столбцы возвращать (d= дата, c= закрыть,v= объем,o= открыть,h= высокий,l= низкий).

РЕДАКТИРОВАТЬ: я должен упомянуть, что 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");

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

Другие вопросы по тегам