Excel स्प्रेडशीट से HTTP POST करने के लिए VBA कोड की क्या आवश्यकता है?
Excel स्प्रेडशीट से HTTP POST करने के लिए VBA कोड की क्या आवश्यकता है?
जवाबों:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send("")
वैकल्पिक रूप से, HTTP अनुरोध पर अधिक नियंत्रण के लिए आप इसके WinHttp.WinHttpRequest.5.1
स्थान पर उपयोग कर सकते हैं MSXML2.ServerXMLHTTP
।
objHTTP.responseText
।
ByRef
यदि आपको मैक और विंडोज दोनों पर काम करने की आवश्यकता है, तो आप QueryTables का उपयोग कर सकते हैं:
With ActiveSheet.QueryTables.Add(Connection:="URL;http://carbon.brighterplanet.com/flights.txt", Destination:=Range("A2"))
.PostText = "origin_airport=MSN&destination_airport=ORD"
.RefreshStyle = xlOverwriteCells
.SaveData = True
.Refresh
End With
टिप्पणियाँ:
अधिक विवरण के लिए, आप " एक्सेल से वेब सेवाओं का उपयोग करने के बारे में मेरा पूरा सारांश देख सकते हैं ।"
का anwser के अलावा विधेयक छिपकली :
अधिकांश बैकेंड कच्चे पोस्ट डेटा को पार्स करते हैं। उदाहरण के लिए PHP में, आपके पास एक सरणी होगी $_POST
जिसमें पोस्ट डेटा के भीतर अलग-अलग चर संग्रहीत किए जाएंगे। इस स्थिति में आपको एक अतिरिक्त हेडर का उपयोग करना होगा "Content-type: application/x-www-form-urlencoded"
:
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("var1=value1&var2=value2&var3=value3")
अन्यथा आपको वेरिएबल पर कच्चा पोस्ट डेटा पढ़ना होगा "$HTTP_RAW_POST_DATA"
।
आप ServerXMLHTTP
VBA प्रोजेक्ट में संदर्भ जोड़कर उपयोग कर सकते हैं MSXML
।
- VBA संपादक खोलें (आमतौर पर मैक्रो संपादित करके)
- उपलब्ध सन्दर्भों की सूची पर जाएँ
- Microsoft XML की जाँच करें
- ओके पर क्लिक करें।
( VBA प्रोजेक्ट्स के भीतर MSXML को संदर्भित करने से )
ServerXMLHTTP MSDN प्रलेखीकरण सभी गुण और ServerXMLHTTP के तरीकों के बारे में पूरी जानकारी नहीं है।
संक्षेप में, यह मूल रूप से इस तरह काम करता है:
- दूरस्थ सर्वर से कनेक्ट करने के लिए खुली विधि को कॉल करें
- अनुरोध भेजने के लिए कॉल भेजें ।
- ResponseXML , responseText , responseStream या responseBody के माध्यम से प्रतिक्रिया पढ़ें
अन्य उपयोगकर्ताओं की प्रतिक्रिया को पूरा करने के लिए:
इसके लिए मैंने एक "WinHttp.WinHttpRequest.5.1" ऑब्जेक्ट बनाया है।
VBA का उपयोग करके Excel के कुछ डेटा के साथ पोस्ट अनुरोध भेजें:
Dim LoginRequest As Object
Set LoginRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
LoginRequest.Open "POST", "http://...", False
LoginRequest.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
LoginRequest.send ("key1=value1&key2=value2")
VBA का उपयोग करके एक्सेल से टोकन प्रमाणीकरण के साथ एक अनुरोध प्राप्त करें:
Dim TCRequestItem As Object
Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1")
TCRequestItem.Open "GET", "http://...", False
TCRequestItem.setRequestHeader "Content-Type", "application/xml"
TCRequestItem.setRequestHeader "Accept", "application/xml"
TCRequestItem.setRequestHeader "Authorization", "Bearer " & token
TCRequestItem.send
TCRequestItem Object
, आप इसे पढ़ सकते हैं जैसे: करने के TCRequestItem.ResponseText
बादTCRequestItem.send