Visual Basic for Applications:
ส่งคำขอ HTTP
วิธีการ:
คีย์ในการส่งคำขอ HTTP ใน VBA คือการใช้งานไลบรารี Microsoft XML, v6.0
(หรือเวอร์ชันเก่ากว่า ขึ้นอยู่กับระบบของคุณ) ก่อนอื่น ตรวจสอบให้แน่ใจว่าการอ้างอิงนี้เปิดใช้งานในโปรเจ็กต์ของคุณโดยไปที่ Tools > References ในตัวแก้ไข VBA และตรวจสอบ Microsoft XML, v6.0
นี่คือวิธีการส่งคำขอ HTTP GET อย่างง่าย:
Dim httpRequest As Object
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")
With httpRequest
.Open "GET", "https://api.example.com/data", False
.send
If .Status = 200 Then
Debug.Print .responseText
Else
Debug.Print "Error: " & .Status & " - " & .statusText
End If
End With
สำหรับคำขอ POST ที่เราต้องส่งข้อมูล (เช่น JSON) ไปยังเซิร์ฟเวอร์:
Dim httpRequest As Object, postData As String
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")
postData = "{""key"":""value""}"
With httpRequest
.Open "POST", "https://api.example.com/submit", False
.setRequestHeader "Content-Type", "application/json"
.send postData
If .Status = 200 Then
Debug.Print .responseText
Else
Debug.Print "Error: " & .Status & " - " & .statusText
End If
End With
ตัวอย่างผลลัพธ์สำหรับคำขอที่สำเร็จอาจเป็นสตริง JSON หรือหน้า HTML ขึ้นอยู่กับ API หรือเว็บเพจที่คุณโต้ตอบ:
{"data": "นี่คือการตอบสนองจากเซิร์ฟเวอร์"}
การศึกษาเพิ่มเติม
วิธีการที่แสดงนำเสนอใช้งาน MSXML2.XMLHTTP
อ็อบเจ็กต์, ซึ่งเป็นส่วนหนึ่งของ Microsoft XML Core Services (MSXML) ได้รับการเป introduce เพื่อเสนอวิธีทำงานด้าน XML ให้กับนักพัฒนา VBA และเมื่อเวลาผ่านไปกลายเป็นเครื่องมือทั่วไปสำหรับคำขอ HTTP แม้ว่าจะไม่ได้ทำงานโดยตรงกับข้อมูล XML แม้ว่าจะเก่าแต่ยังเป็นตัวเลือกที่เชื่อถือได้สำหรับการโต้ตอบเว็บอย่างง่ายใน VBA
อย่างไรก็ตาม, VBA และกลไกคำขอ http ของมันขาดความเข้มแข็งและความยืดหยุ่นที่พบในสภาพแวดล้อมการโปรแกรมแบบสมัยใหม่ ตัวอย่างเช่น, การจัดการคำขอแบบอะซิงโครนัสหรือการทำงานภายในแอปพลิเคชันที่ต้องการคุณลักษณะ HTTP ขั้นสูง (เช่นเว็บซอกเก็ตหรือเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์) อยู่นอกขอบเขตของ VBA เมื่อทำงานในโครงการรวมเว็บที่ซับซ้อนมากขึ้น นักพัฒนามักใช้ไลบรารีหรือเครื่องมือภายนอก หรือแม้แต่การทำให้เบราว์เซอร์ทำงานอัตโนมัติผ่านเทคนิคเว็บสแครปปิ้ง แม้ว่าเหล่านี้จะเป็นวิธีแก้ปัญหาแทนที่จะเป็นโซลูชัน
ภาษาและสภาพแวดล้อมเช่น Python กับไลบรารี requests
ของมันหรือ JavaScript ที่ทำงานบน Node.js เสนอความสามารถในการส่งคำขอ HTTP ที่ทรงพลังและหลากหลายเลยทันที รวมถึงการดำเนินการแบบอะซิงโครนัส, การจัดการ JSON ที่ง่ายขึ้น, และการสนับสนุนสำหรับเทคโนโลยีเว็บต่างๆอย่างกว้างขวาง นักพัฒนาที่มีความลึกในระบบนิเวศของ Microsoft อาจพิจารณาการเปลี่ยนไปใช้ PowerShell หรือ C# สำหรับงานที่ต้องการการโต้ตอบเว็บที่ซับซ้อนมากขึ้น โดยใช้ประโยชน์จากคุณสมบัติการเขียนโปรแกรมเครือข่ายที่กว้างขวางของ .NET
ดังนั้น ในขณะที่ความสามารถของ VBA ในการส่งคำขอ HTTP เพียงพอสำหรับการสืบค้นและงานดึงข้อมูลอย่างง่าย การสำรวจทางเลือกอื่นๆ จึงกลายเป็นสิ่งสำคัญเมื่อความต้องการโครงการของคุณพัฒนาไปสู่ภูมิทัศน์เว็บที่ซับซ้อนและสมัยใหม่