3 votes

Google Finance, comment obtenir les données JSON en flux continu ?

J'ai essayé de l'expliquer tout à l'heure, mais j'ai manifestement échoué !

Ainsi, si vous avez un graphique Google Finance ouvert, par exemple :

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

J'aimerais utiliser l'objet (HttpWebRequest) en C# afin de pouvoir récupérer les petites données que Google envoie à la page pour mettre à jour le graphique.

Un ami a mentionné qu'il s'agissait de JSON ?

J'ai essayé d'utiliser l'exemple de code suivant, mais même lorsque j'ai défini la propriété keep alive à "true", cela ne fonctionnait toujours pas :

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

0voto

David Hoerster Points 18815

Vous devez également modifier la ligne de l'exemple qui définit le paramètre Connection à la propriété Close . Commentez cette ligne (et gardez la propriété keep-alive à true) :

myHttpWebRequest2.Connection = "Close";

Si vous faites cela, votre exemple devrait fonctionner correctement.

En ce qui concerne l'obtention des données et l'utilisation HttpWebRequest pour travailler avec, vous pouvez le faire. Les données renvoyées ne sont pas du JSON - elles ressemblent à du texte normal et je suppose que le javascript de Google les analyse. (Je n'ai pas inspecté le javascript de la page de Google Finance, mais c'est ce que je pense).

En utilisant Fiddler, la réponse de cette 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

ressemble à ceci :

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

C'est un peu énigmatique, mais vous pouvez voir comment la ligne des COLONNES s'aligne sur les données en bas. De même, la ligne f Le paramètre querystring semble indiquer les colonnes à retourner (d=date, c=close,v=volume,o=open,h=high,l=low).

EDIT : Je dois mentionner que l'URL que j'ai utilisée est envoyée depuis la page du graphique financier pour obtenir des données mises à jour - vous pouvez voir que cette URL est demandée à intervalles réguliers à l'aide d'un outil comme Fiddler. Les données de réponse que j'ai collées ci-dessus sont également produites par l'exemple d'application de MSDN.

Mais en commentant cette ligne dans l'exemple de MSDN et en manipulant un peu Fiddler, vous devriez obtenir les données et les indices dont vous avez besoin pour analyser le retour provenant de cette URL.

J'espère que cela vous aidera !

PS - ma première ligne dans mon exemple MSDN modifié ressemble à ceci :

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");

J'ai apporté une modification similaire à l'autre WebRequest un peu plus loin dans l'exemple... à part cela, je n'ai rien changé d'autre dans l'exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X