سؤال
هل هناك طريقة لإجراء طلب HTTP في برنامج Visual Basic؟ أحتاج إلى الحصول على محتويات الاستجابة من عنوان URL معين للمعالجة.
المحلول
Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://www.example.com", False
o.send
' o.responseText now holds the response as a string.
نصائح أخرى
لم تقم في وقت كتابة هذا التقرير وصف ما ستفعله بالاستجابة أو نوع المحتوى الخاص به. إجابة تحتوي بالفعل على استخدام أساسي للغاية MSXML2.XMLHTTP
(أوصي أكثر وضوحا MSXML2.XMLHTTP.3.0
Progid) ومع ذلك قد تحتاج إلى القيام بأشياء مختلفة مع الاستجابة ، قد لا تكون نص.
يحتوي XMLHTTP أيضًا على ملف responseBody
الخاصية التي هي نسخة بايت من الاستجابة وهناك أ responseStream
وهو IStream
غلاف للاستجابة.
لاحظ أنه في متطلبات جانب الخادم (على سبيل المثال ، VBScript المستضاف في ASP) ستستخدمها MSXML.ServerXMLHTTP.3.0
أو WinHttp.WinHttpRequest.5.1
(التي لها واجهة متطابقة قريبة).
فيما يلي مثال على استخدام XMLHTTP لجلب ملف PDF وتخزينه:-
Dim oXMLHTTP
Dim oStream
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
oXMLHTTP.Open "GET", "http://someserver/folder/file.pdf", False
oXMLHTTP.Send
If oXMLHTTP.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write oXMLHTTP.responseBody
oStream.SaveToFile "c:\somefolder\file.pdf"
oStream.Close
End If
إذا كنت تستخدم طلب GET لإرسال البيانات فعليًا ...
التحقق من:http://techhelplist.com/index.php/tech-tutorials/37-windows-troubles/60-vbscript-sending-get-request
تكمن مشكلة MSXML2.XMLHTTP في أن هناك عدة إصدارات منه ، مع أسماء مختلفة اعتمادًا على إصدار ويندوز OS والتصحيحات.
هذا يفسر ذلك:http://support.microsoft.com/kb/269238
كان لدي المزيد من الحظ في استخدام VBScript للاتصال
set ID = CreateObject("InternetExplorer.Application")
IE.visible = 0
IE.navigate "http://example.com/parser.php?key=" & value & "key2=" & value2
do while IE.Busy....
.... والمزيد من الأشياء ولكن لمجرد ترك الطلب يذهب من خلال.
strRequest = "<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" " &_
"xmlns:tem=""http://tempuri.org/"">" &_
"<soap:Header/>" &_
"<soap:Body>" &_
"<tem:Authorization>" &_
"<tem:strCC>"&1234123412341234&"</tem:strCC>" &_
"<tem:strEXPMNTH>"&11&"</tem:strEXPMNTH>" &_
"<tem:CVV2>"&123&"</tem:CVV2>" &_
"<tem:strYR>"&23&"</tem:strYR>" &_
"<tem:dblAmount>"&1235&"</tem:dblAmount>" &_
"</tem:Authorization>" &_
"</soap:Body>" &_
"</soap:Envelope>"
EndPointLink = "http://www.trainingrite.net/trainingrite_epaysystem" &_
"/trainingrite_epaysystem/tr_epaysys.asmx"
dim http
set http=createObject("Microsoft.XMLHTTP")
http.open "POST",EndPointLink,false
http.setRequestHeader "Content-Type","text/xml"
msgbox "REQUEST : " & strRequest
http.send strRequest
If http.Status = 200 Then
'msgbox "RESPONSE : " & http.responseXML.xml
msgbox "RESPONSE : " & http.responseText
responseText=http.responseText
else
msgbox "ERRCODE : " & http.status
End If
Call ParseTag(responseText,"AuthorizationResult")
Call CreateXMLEvidence(responseText,strRequest)
'Function to fetch the required message from a TAG
Function ParseTag(ResponseXML,SearchTag)
ResponseMessage=split(split(split(ResponseXML,SearchTag)(1),"</")(0),">")(1)
Msgbox ResponseMessage
End Function
'Function to create XML test evidence files
Function CreateXMLEvidence(ResponseXML,strRequest)
Set fso=createobject("Scripting.FileSystemObject")
Set qfile=fso.CreateTextFile("C:\Users\RajkumarJoshua\Desktop\DCIM\SampleResponse.xml",2)
Set qfile1=fso.CreateTextFile("C:\Users\RajkumarJoshua\Desktop\DCIM\SampleReuest.xml",2)
qfile.write ResponseXML
qfile.close
qfile1.write strRequest
qfile1.close
End Function