3

先ほど説明しようとしましたが、明らかに失敗しました。

たとえば、Google Finance グラフを開いている場合は、次のようになります。

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

C# で (HttpWebRequest) オブジェクトを何らかの方法で使用して、Google がページに送信する小さなデータを取得してグラフを更新できるようにしたいと考えています。

友人は、これは JSON だと言いましたか?

次のコード例を使用しようとしましたが、キープアライブ プロパティを「true」に設定しても機能しません。

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

4

1 に答える 1

0

Connectionプロパティを に設定する例の行も変更する必要がありますClose。次の行をコメントアウトします (keep-alive プロパティを true に設定したまま):

myHttpWebRequest2.Connection = "Close";

あなたはそれを行い、あなたの例はうまくいくはずです。

データを取得して使用HttpWebRequestすることに関しては、それを行うことができます。返されたデータは JSON ではありません。ストレート テキストのように見えます。Google の JavaScript が解析していると思います。(Google Finance のページの JavaScript は調べていませんが、私の推測です。)

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=date、c=close、v=volume、o=open、h=high、l=low)。

編集:私が使用した URL は、更新されたデータを取得するために財務グラフ ページから送信されていることに注意してください。この URL は、Fiddler などのツールを使用して定期的に要求されていることがわかります。上に貼り付けた応答データも、MSDN のサンプル アプリケーションによって出力されます。

しかし、MSDN の例の 1 行をコメント アウトし、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...それ以外は、例では何も変更していません。

于 2011-06-13T20:11:27.127 に答える