سؤال

هل هناك طريقة لإجراء طلب 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top