บทความนี้อธิบายวิธีการโมดูลของ Visual Basic6.0 ซึ่งใช้ XMLHTTP เพื่อใช้งานฟังก์ชัน Post และ Get แม้ว่าจะเป็นโค้ดเก่า แต่ก็สามารถแทนที่ตัวควบคุม Inet เพื่อให้เกิดการสื่อสารข้อมูลได้ มันคุ้มค่าที่จะเรียนรู้จาก
รหัสโมดูลหลักมีดังนี้:
'=================================================' = ========='|. ชื่อโมดูล |. XMLHTTP'|. แทนที่ตัวควบคุม Inet เพื่อให้เกิดการสื่อสารข้อมูล'================== === ===================================สาธารณะ Enum DataEnum ResponseText = 1 ResponseBody = 2End Enum ฟังก์ชั่นสาธารณะ GetData(ByVal Url As สตริง, ByVal DataStic เป็น DataEnum) เป็นตัวแปรตามข้อผิดพลาด GoTo ข้อผิดพลาด: Dim XMLHTTP เป็นวัตถุ Dim DataS เป็นสตริง Dim DataB() เป็นชุดไบต์ XMLHTTP = CreateObject("Microsoft.XMLHTTP") XMLHTTP.Open "get", Url, True XMLHTTP .send ในขณะที่ XMLHTTP.ReadyState <> 4 DoEvents Wend '-------------------------------------- ------- ฟังก์ชั่นส่งคืน เลือก Case DataStic Case ResponseText '-------------------------------- ส่งคืนสตริงโดยตรง DataS = XMLHTTP.ResponseText GetData = DataS Case ResponseBody '-- ----------------------------------- ส่งคืนไบนารีโดยตรง DataB = XMLHTTP.ResponseBody GetData = DataB Case ResponseBody + ResponseText '--- - -------------------------- การแปลงไบนารีเป็นสตริง [ลองเมื่อสตริงที่ส่งคืนโดยตรงอ่านไม่ออก] DataS = BytesToStr(XMLHTTP.ResponseBody) GetData = DataS Case Else '-------------------------------- GetData ส่งคืนไม่ถูกต้อง = "" สิ้นสุด เลือก '-------------------------------------------- ปล่อยพื้นที่ ตั้งค่า XMLHTTP = ไม่มีฟังก์ชันออกจากฟังก์ชันERR: GetData = ""ฟังก์ชันสิ้นสุดฟังก์ชันสาธารณะ PostData(ByVal StrUrl As String, ByVal StrData As String, ByVal DataStic As DataEnum) As Variant On Error GoTo ERR: Dim XMLHTTP As Object Dim DataS As String Dim DataB() As ไบต์ตั้ง XMLHTTP = CreateObject("Microsoft.XMLHTTP") XMLHTTP.Open "POST", StrUrl, True XMLHTTP.setRequestHeader "Content-Length", Len(PostData) XMLHTTP.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded" XMLHTTP.send (StrData) ทำ จนถึง XMLHTTP.ReadyState = 4 DoEvents Loop '-------------------------------- ฟังก์ชันส่งคืน Select Case DataStic Case ResponseText '--------------------------------- ส่งคืนสตริงโดยตรง DataS = XMLHTTP.ResponseText PostData = DataS Case ResponseBody '-- --- ---------------------------- ส่งคืนไบนารี DataB = XMLHTTP.ResponseBody PostData = DataB Case ResponseBody + ResponseText '---- -- --------------------- การแปลงไบนารีเป็นสตริง [ลองเมื่อสตริงที่ส่งคืนโดยตรงอ่านไม่ออก] DataS = BytesToStr(XMLHTTP.ResponseBody) PostData = DataS Case Else '- ----------------------------------- PostData การส่งคืนไม่ถูกต้อง = "" End Select '---------------------------------------- Release space Set XMLHTTP = Nothing Exit FunctionERR : PostData = ""End Function Function BytesToStr(ByVal vIn) As String strReturn = "" For i = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn, i, 1)) ถ้า ThisCharCode < &H80 จากนั้น strReturn = strReturn & Chr(ThisCharCode) อื่น NextCharCode = AscB(MidB(vIn, i + 1, 1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) i = i + 1 End If Next BytesToStr = ฟังก์ชัน strReturnEnd