asp中MSXML2.ServerXMLHTTP 的用法

发布时间:2015年2月7日 作者:未知 查看次数:1563

asp中MSXML2.ServerXMLHTTP 的用法


MSXML2.ServerXMLHTTP 的用法
自:http://www.cnblogs.com/newsouls/archive/2011/12/26/msxml2serverxmlhttp.html

<%  
Response.Clear 
On Error Resume Next 
response.Buffer=false 
err.clear 
server.ScriptTimeout=9999999 
 
'执行模块,整个程序的流程。由上至下的走..先看GetResStr(URL) 他首先打开网页.然后将网站的html下载回来后. 
'然后再用正则表达来处理你需要的值。而这里演示的是直接取得他的标题.. 
'最后将值转换一下。然后输出到浏览器。。整个流程就如此了 
dim reg,vUrl,pUrl,VBody,title 
vUrl="http://www.sohu.com" '更换网站地址 
reg="\<meta.+ charset= {0,}([^\"" \>\/]*).+\/{0,1}\>" 
  if vUrl<>"" then  '取得网站标题 
      VBody=GetResStr(vUrl) 
      title=GetCode(VBody,"\<title\>(.*)\<\/title\>") 
  else 
      vUrl="地址取不到" 
  end if 
  if err.number<>0 then  
     response.write "标题出错" 
  else 
     if title<>"" then 
       response.write title 
     else 
       response.write "标题为空" 
      end if 
  end if 
response.End() 
 
 
'函数名:GetResStr 
'作用:获取指定URL的HTML代码 
'参数:URL-要获取的URL 
function GetResStr(URL) 
err.clear 
dim ResBody,ResStr,PageCode,ReturnStr 
Set Http=server.createobject("msxml2.serverxmlhttp.3.0") '先创建一个serverxmlhttp对像.并指明他是3.0版本的..可以省去 
Http.setTimeouts 10000, 10000, 10000, 10000 '设置超时时间 
Http.open "GET",URL,False '以上已设置后。就打开网址。参数1:提交方式,url地址,异步执行 一般选择异步执行 
Http.Send() '调用Send方法发送XML数据 
If Http.Readystate =4 Then '文档已经解析完毕,客户端可以接受返回消息 
  If Http.status=200 Then '接收返回的错误 
    ResStr=http.responseText '接收返回的信息..(源代码一般) 
    ResBody=http.responseBody '以html方式返回消息 
    PageCode=GetCode(ResStr,reg) '用正则表达式。将网站返回的title值进行匹配。如果有就返回。。否则返回gbk2312 
    ReturnStr=BytesToBstr(http.responseBody,PageCode) '需要将其转换一下.. 
    GetResStr=ReturnStr '返回值 
  End If  
End If  
End Function 
 
 
'函数名:BytesToBstr 
'作用:转换二进制数据为字符 
'参数:Body-二进制数据,Cset-文本编码方式 
Function BytesToBstr(Body,Cset)  
  Dim Objstream  
  Set Objstream = Server.CreateObject("adodb.stream") '创建一个字符流.... 
  objstream.Type = 1  '返回的数据类型 adTypeBinary  =1 adTypeText  =2 
  objstream.Mode =3   '指定或返加模式 
  objstream.Open  '指定打开模式,可不指定,可选参数如下: 
  objstream.Write body  
  objstream.Position = 0  
  objstream.Type = 2  
  objstream.Charset =Cset  
  BytesToBstr = objstream.ReadText '返回他的内容 
  objstream.Close  
  set objstream = nothing  
End Function 
  
'函数名:GetCode 
'作用:转换二进制为字符 
'参数:str-待查询字符串,regstr-正则表达式 
Function GetCode(str,regstr) 
Dim Reg,serStr 
set Reg= new RegExp '先创建一个正则表达式.. 
Reg.IgnoreCase = True '设置是否区分字符大小写 
Reg.MultiLine = True  '多行方式保存 
Reg.Pattern =regstr '查找html中有没有 \<meta.+ charset= {0,}([^\"" \>\/]*).+\/{0,1}\> 匹配 
if Reg.test(str) then '若查询到匹配项 
   Set Cols = Reg.Execute(str) 
   serStr=Cols(0).SubMatches(0) '使用匹配到的第一个匹配项 
else '否则给个默认值gb2312,有点省懒法,如果页面没给出编码格式,想知道确实有点麻烦 
   serStr="gb2312" 
end if 
GetCode=serStr 
end function 
 
%>

 



版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110