|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
一般情况下,假如我们想了解股市行情,必须登录专业股票网站,输入公司代码才能看到详细股价。其实,利用XMLHTTP协议,我们每个人都可以在自己的个人网站中提供股市行情具体情况查询服务,本文介绍了如何使用ASP、VbScript结合xmlhttp编程来实现这个功能。 一、原理 原理异常简朴,在很多大型网站上都有实时更新的股市行情信息,我们通过自己的WEB服务器发送出XMLHTTP命令访问雅虎财经站点的股市行情数据库服务器,从数据库中查询我们所需要的内容,然后通过ASP组合成网页回送给客户端。 同时,我们使用XmlHttp协议实现客户端网页无刷新效果以及向服务端提出检索数据的要求。 XMLHTTP答应你打开一个到任意服务器上的HTTP连接,发送一些数据和取回一些数据。并且所有的这一切都是在很少的几段脚本中就能够实现。使用XMLHTTP对象通常是进行XML数据交换,但其他格式的数据也是答应的。 在商业程序中的运用这种交换类型的标准模式是客户端发送一个文本字符串到服务端,然后服务端将这个字符串装载入一个XMLDOM对象中并且解释它,然后返回一段HTML给客户端,或则是另外一段XML代码给客户端让客户端的浏览器自己解释。在这种方法下,对于信息的传递来说是异常有效的形式,尤其是当你使用DHTML答应你根据返回信息动态显示时。 详细流程为:客户端通过xmlhttp提出股票行情查询要求-->WEB服务器中的ASP侦听页接受哀求后使用xmlhttp向股市行情数据库服务器发送检索命令-->数据库执行查询操作,返回结果给我们自己的WEB服务器(html形式)-->WEB服务器接收到内容后,过滤掉HTML多余部分,挑选出纯股票数据,组合后将结果传送给客户端->客户端浏览器使用vbscript显示出来。 二、ASP XmlHttp编程简述 1、客户端dns2.htm页面: <script language="vbscript"> Sub submit1_onmouseup Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL, theString,TheForm Set TheForm = Document.wordfind window.status="正在检索数据・・・" strURL="dns2.asp" \\\' 服务器侦听页地址 Set objXML = CreateObject("Microsoft.XMLHTTP") \\\'创建MS的XMLHTTP组件 stra = "submit=submit&fqdn="&TheForm.webname.value objXML.Open "post",strURL,false \\\'采用Post提交方法; objXML.setrequestheader "content-length",len(stra) objXML.setrequestheader "content-type","application/x-www-form-urlencoded" objXML.send stra \\\' 发送信息 xmlGet = objXML.responsebody \\\'稍等片刻后,得到服务器端传回来的结果; xmlGet = bytes2bstr(xmlGet) \\\'将单字节转变成文本格式函数,源程序可以下面的dns2.asp程序中找到; TheForm.comments.value=xmlGet Set objXML = Nothing end sub </script> <html><head><title>XMLHTTP之股票行情篇</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgColor=#a1bae6> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td width="100%" align=center> <form method="post" name=wordfind onsubmit="javascript:return false"> <FONT color=#002e5b face=geneva,arial,sans-serif size=2> <B>请选择股票名称(美国纳斯达克)</B></FONT> <FONT color=#002e5b face=geneva,arial,sans-serif size=2><B>:<br> <select name=webname style="HEIGHT: 22px; WIDTH: 80px"> <option value="^IXIC">纳斯达克</option><option value="ASIA">亚信</option> <option value="CHINA">中华网</option> <option value="NTES">网易</option> <option value="SINA">新浪网</option> <option value="SOHU">搜狐</option> </select><input type="submit" value="查询" id=Submit1 name=Submit1></B> <TEXTAREA name=comments readonly rows=10 cols=76 ></TEXTAREA> </form></td></tr></table></body></html> 2、服务器端dns2.asp程序: <% dim xmlGet xmlGet="" if len(trim(Request.form("fqdn"))) > 1 then Dim objXML, objXSL, objFSO Dim strFile, strFileName, strXSL Dim strURL, theString \\\'股市行情数据库服务器的地址 strURL="http://cn.finance.yahoo.com/q?s="+trim(Request.form("fqdn"))+"&d=2b" Set objXML = CreateObject("Microsoft.XMLHTTP") \\\'创建MS的XMLHTTP组件 objXML.Open "get", strURL, False objXML.Send \\\' 发送信息 xmlGet = objXML.responsebody \\\'稍等片刻后,得到股市行情数据服务器端传回来的结果; xmlGet = bytes2bstr(xmlGet) \\\'转变成文本格式函数,可以源程序中找到; \\\'过滤无用的HTML成分,挑选出股票详细信息; strFind1 = instr(1,xmlGet,"最後交易",1)+8 strFind2 = instr(strFind1,xmlGet,"<b>",1)+3 strFind3 = instr(strFind2,xmlGet,"</b></td>",1) xmlGet1="最后交易:"+mid(xmlGet,strFind2,strFind3-strFind2)+chr(13)+chr(10) \\\'最后交易价 strFind1 = instr(1,xmlGet,"涨跌",1)+4 strFind2 = instr(strFind1,xmlGet,"<font color=",1)+19 strFind3 = instr(strFind2,xmlGet,"</font>",1) xmlGet2="涨跌:"+mid(xmlGet,strFind2,strFind3-strFind2)+chr(13)+chr(10) \\\'涨跌 Set objXML = Nothing end if response.write trim(Request.form("fqdn"))+"的股市行情:"+chr(13)+chr(10)+xmlGet1+xmlGet2 function bytes2bstr(vin) strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next bytes2bstr = strreturn end function %> 在上述过程中,可以发现我们自己的WEB服务器中的ASP程序其实只起到一个中间传递的作用,在实际应用中,也可以省去这个中间层,使用vbscript通过xmlhttp直接向股市行情数据库发送和接收数据。不过这样的话,可能会因为IE中“通过(其它)域访问数据资源”被禁用(默认)而引起权限不够导致无法执行,所以该省去ASP中间层的方式并不太通用。 本程序在基于Windows2000平台的IIS5.0和IE6.0上运行通过。实际使用过程中,可以把上述代码拷贝到自己网页中,经过简朴的页面编辑,就可在自己的网页中增加在页面无闪烁情况下的股票信息查询功能了,初看上去,还真的有点象专业的证券服务商网站提供的服务了。 返回类别: 教程 上一教程: ASP无组件文件上传的实例 下一教程: ASP中实现从DBF数据库导出数据到SQL表 您可以阅读与"使用XMLHTTP为网站增加股市行情查询功能"相关的教程: · 使用W3SOCKETS组件实现域名查询功能 · ASP进阶教程Ⅸ:留言查询功能(二) · ASP查询XML的代码,实现了无刷新、模糊查询功能 · 使用XMLHTTP制作域名查询系统 · ASP进阶教程Ⅸ:留言查询功能(一) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |