现在的位置: 首页 > 综合 > 正文

XMLHTTP对象及其方法

2012年03月25日 ⁄ 综合 ⁄ 共 4589字 ⁄ 字号 评论关闭

XMLHTTP对象及其方法
------------------
MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。  
创建XMLHTTP对象的语句如下:  
Set   objXML   =   CreateObject( "Msxml2.XMLHTTP ")   或
Set   objXML   =   CreateObject(“Microsoft.XMLHTTP”)
'   Or,   for   version   3.0   of   XMLHTTP,   use:
'   Set   xml   =   Server.CreateObject( "MSXML2.ServerXMLHTTP ")
对象创建后调用Open方法对Request对象进行初始化,语法格式为:  
poster.open   http-method,   url,   async,   userID,   password  
Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示:    
http-method:   HTTP的通信方式,比如GET或是   POST  
url:   接收XML数据的服务器的URL地址。通常在URL中要指明   ASP或CGI程序  
async:   一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作  
userID   用户ID,用于服务器身份验证  
password   用户密码,用于服务器身份验证  
XMLHTTP对象的Send方法  
用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:  
poster.send   XML-data  
Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。  
XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:  
值   说明  
0   Response对象已经创建,但XML文档上载过程尚未结束  
1   XML文档已经装载完毕  
2   XML文档已经装载完毕,正在处理中  
3   部分XML文档已经解析  
4   文档已经解析完毕,客户端可以接受返回消息
客户机处理响应信息  
客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的:  
●   responseTxt:将返回消息作为文本字符串;  
●   responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;  
●   responseStream:将返回消息视为Stream对象。  

Set   objXML   =   CreateObject( "Microsoft.XMLHTTP ")   '创建XMLHTTP组件;
UrlSend   =   "http://xxxx/ "
objXML.open   "GET ",UrlSend,false
objXML.send()
ReturnVar   =   objXML.responseText
'处理返回数据做判断!

'取得网页文件代码函数
function   getHTTPPage(url)
dim   http
set   http=createobject( "MSXML2.XMLHTTP ")
Http.open   "GET ",url,false
Http.send()
if   Http.readystate <> 4   then  
exit   function
end   if
getHTTPPage=bytes2BSTR(Http.responseBody)
set   http=nothing
if   err.number <> 0   then   err.Clear  
end   function

'字节转化成字符串函数
Function   bytes2BSTR(vIn)
dim   strReturn
dim   i,ThisCharCode,NextCharCode
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

比如你的myurl= "www.163.com "
Content =   getHTTPPage(myurl)
你可以response.write出content来看,然后用instr,mid,replace提炼出页面的主题

2

Function   GetHTTPPage(url)   '获取服务器生成的html代码
on   error   resume   next  
dim   XmlHttp  
set   XmlHttp=Server.createobject( "Microsoft.XMLHTTP ")
XmlHttp.open   "GET ",url,false  
XmlHttp.send()  
'getHTTPPage=Http.responseText
if   XmlHttp.readystate <> 4   then   exit   function  
GetHTTPPage=bytes2BSTR(XmlHttp.responseBody)
set   XmlHttp=nothing
if   err.number <> 0   then   err.Clear
End   Function  

Function   Bytes2bStr(vin)
    Dim   BytesStream,StringReturn
    Set   BytesStream   =   Server.CreateObject( "ADODB.Stream ")
    BytesStream.Type   =   2
    BytesStream.Open
    BytesStream.WriteText   vin
    BytesStream.Position   =   0
    BytesStream.Charset   =   "GB2312 "
    BytesStream.Position   =   2
    StringReturn   =BytesStream.ReadText
    BytesStream.close
    Set   BytesStream   =   Nothing
    Bytes2bStr   =   StringReturn
End   Function

3

function   GetXml(Url){
try{
var   XmlHttp=Server.CreateObject( "Microsoft.XMLHTTP ");
XmlHttp.open( "get ",Url,false);
XmlHttp.send();
return   XmlHttp.responseBody;
}catch(e){return   null}
}
function   Bytes2bStr(vin){
try{
var   BytesStream,StringReturn;
BytesStream   =   Server.CreateObject( "ADODB.Stream ")
with(BytesStream){
Type   =2;
Open();
WriteText(vin);
Position   =   0   ;
Charset   =   "GB2312 ";
Position   =   2;
StringReturn   =   ReadText();
close();
}
BytesStream   =   null
return   StringReturn;
}catch(e){return   " "}
}

 

怎样取出网页里的部分内容

----------->

<%
on   error   resume   next
Private   d_exsit
Dim   Retrieval
Dim   TakenHTML

 

Function   GetURL(url)
        Set   Retrieval   =   Server.CreateObject( "Microsoft.XMLHTTP ")
                    With   Retrieval
                    .open   "GET ",   url,   False,   " ",   " "
                    .Send
                    GetURL   =   .responsebody
                    End   With
        Set   Retrieval   =   Nothing
End   Function

Function   bytes2BSTR(vIn)
        Dim   strReturn
        Dim   I,   ThisCharCode,   NextCharCode
        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

TakenHTML   =   GetURL( "http://www.eyou.com ")
TakenHTML=bin2str(TakenHTML)  

titl=InStr(1,takenhtml, " <title> ",1)
titll=InStr(1,takenhtml, " </title> ",1)
title=mid(takenhtml,titl,titl1)

fon=InStr(1,takenhtml, " <font   class= 'STitle '> ",1)
fonn=InStr(1,takenhtml, " </font> ",1)
font=mid(takenhtml,fon,fonn)

pp=InStr(1,takenhtml, " <p   class=content> ",1)
ppp=InStr(1,takenhtml, " </p> ",1)
pppp=mid(takenhtml,pp,ppp)

%>

抱歉!评论已关闭.