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)

%>

發佈了32 篇原創文章 · 獲贊 5 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章