您还需要更改示例中设置的行Connection
财产给Close
。注释掉这一行(同时将 keep-alive 属性设置为 true):
myHttpWebRequest2.Connection = "Close";
你这样做了,你的例子应该运行得很好。
关于获取数据和使用HttpWebRequest
要使用它,您可以做到这一点。返回的数据不是 JSON - 它看起来像纯文本,我猜 Google 的 javascript 正在解析它。 (我还没有检查 Google 财经页面上的 JavaScript,但这是我的猜测。)
使用 Fiddler,来自此 URL 的响应:
看起来像这样:
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=date、c=close、v=volume、o=open、h=high、l=low)。
EDIT:我应该提到,我使用的 URL 是从财务图表页面发送的,以获取更新的数据 - 您可以使用 Fiddler 等工具看到定期请求该 URL。我上面粘贴的响应数据也是由 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
在示例中进一步调用...除此之外,我没有更改示例中的其他任何内容。