'************************************************ * ******************************
'ฟังก์ชั่น (สาธารณะ)
'ชื่อ: ฟังก์ชั่นการดึงข้อมูลจากระยะไกล
'ฟังก์ชัน: ใช้ XMLHTTP เพื่อเก็บข้อมูลจากระยะไกล
'พารามิเตอร์: sMethod --- วิธีการส่ง
' sUrl ------ ที่อยู่เป้าหมาย
' iMode ----- ประเภทเนื้อหาที่ส่งคืน: 0 คือไบนารี่, 1 คือข้อความ, 2 คือคุกกี้, 3 คือข้อมูลส่วนหัวของไฟล์
' sBase ----- ตั้งค่าการเข้ารหัส
' sReferer -- ตั้งค่าแหล่งที่มา
' sCookie --- ตั้งค่าคุกกี้
' sLanguage - ตั้งค่าภาษา
' sData ----- ตั้งค่าพารามิเตอร์ที่จะส่ง
' sContent -- ตั้งค่าประเภทข้อมูลการรับ
' sAgent ---- ตั้งค่าเบราว์เซอร์
' sEncoding - ตั้งค่าการบีบอัด gzip
' sAccept --- กำหนดประเภทเอกสาร
'************************************************ * ******************************
ฟังก์ชั่นสาธารณะ SenFe_StealData (sMethod, sUrl, iMode, sBase, sReferer, sCookie, sLanguage, sData, sContent, sAgent, sEncoding, sAccept)
Dim oXmlHttp : ตั้งค่า oXmlHttp = Server.CreateObject(Msxml2.ServerXMLHTTP)
ด้วย oXmlHttp
ถ้า sMethod= ดังนั้น sMethod = GET
. เปิด sMethod, sUrl, False
'ตั้งค่าแหล่งที่มาของหน้า
ถ้า sReferer<>แล้ว
.SetRequestHeader ผู้อ้างอิง, sReferer
อื่น
.SetRequestHeader ผู้อ้างอิง, แยก (sUrl, /) (2)
สิ้นสุดถ้า
ถ้า sCookie<> ดังนั้น .SetRequestHeader Cookie, sCookie 'Set Cookie
ถ้า sLanguage<> จากนั้น .SetRequestHeader Accept-Language, sLanguage 'Set language
ถ้า sData<> จากนั้น .SetRequestHeader Content-Length, Len(sData) 'ตั้งค่าความยาวของข้อมูล
ถ้า sContent<> จากนั้น .SetRequestHeader Content-Type, sContent 'ตั้งค่าประเภทข้อมูลที่ยอมรับ
ถ้า sAgent<> จากนั้น .SetRequestHeader User-Agent, sAgent 'ตั้งค่าเบราว์เซอร์
หาก sEncoding<> จากนั้น .SetRequestHeader ยอมรับ-การเข้ารหัส, sEncoding 'ตั้งค่าการบีบอัด gzip
ถ้า sAccept<> จากนั้น .SetRequestHeader ยอมรับ sAccept 'Document type
.ส่ง sData
'ในขณะที่ .ReadyState <> 4
' .รอการตอบสนอง 1,000
'เวนด์
ถ้า .ReadyState<>4 หรือ .Status<>200 แล้ว
SenFe_StealData = ไม่สามารถดึงข้อมูลได้!
ออกจากฟังก์ชัน
สิ้นสุดถ้า
เลือก Case iMode
กรณีที่ 0 SenFe_StealData = .ResponseBody
กรณีที่ 1
ถ้า sBase<>แล้ว
SenFe_StealData = BytesToBstr(.ResponseBody, sBase)
อื่น
SenFe_StealData = .ResponseText
สิ้นสุดถ้า
กรณีที่ 2 SenFe_StealData = .getResponseHeader(ชุดคุกกี้)
กรณีอื่น SenFe_StealData = .getAllResponseHeaders()
สิ้นสุดการเลือก
จบด้วย
ฟังก์ชันสิ้นสุด
'************************************************ * ******************************
'ฟังก์ชั่น: การแปลงการเข้ารหัส
'พารามิเตอร์: sBody - เนื้อหาที่จะแปลง
' sCset - การเข้ารหัส
'************************************************ * ******************************
ฟังก์ชั่น BytesToBstr (sBody, sCset)
ด้วย oAdos
.ประเภท = 1
.โหมด = 3
.เปิด
.เขียน sBody
.ตำแหน่ง = 0
.ประเภท = 2
.Charset = sCset
BytesToBstr = .ReadText
.ปิด
จบด้วย
ฟังก์ชันสิ้นสุด