------------------
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)
%>