----فِهرِس----
1. طريقة طلب الصابون
2. طريقة طلب النشر
3. وظيفة SHOWALLNODE (حول سمات العقدة وعرض البيانات)
--------------------------
واحد. مثال لطلب SOAP يوجد أدناه مثال لطلب SOAP. يجب استبدال العناصر النائبة المعروضة بالقيم الفعلية.
POST /WebService1/UserSignOn.asmx HTTP/1.1
المضيف: 192.100.100.81
نوع المحتوى: text/xml;
طول المحتوى: الطول
SOAPAction: " http://tempuri.org/LoginByAccount "
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd=" http://www.w3.org/2001/XMLSchema " xmlns:soap=" http //schemas.xmlsoap.org/soap/envelope/ ">
<الصابون: الجسم>
<LoginByAccount xmlns=" http://tempuri.org/ ">
<اسم المستخدم>سلسلة</اسم المستخدم>
<password>سلسلة</password>
</لوجينبياكونت>
</الصابون: الجسم>
</soap:Envelope>
من أجل التفاعل مع WEBSERVICE، تحتاج إلى إنشاء طلب SOAP تمامًا كما هو مذكور أعلاه:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx "
SoapRequest="<?xml version="&CHR(34)&"1.0"&CHR(34)&" encoding="&CHR(34)&"utf -8"&CHR(34)&"?>"& _
"<soap:Envelope xmlns:xsi="&CHR(34)&" http://www.w3.org/2001/XMLSchema-instance"&CHR(34 )&" "& _
"xmlns:xsd="&CHR(34)&" http://www.w3.org/2001/XMLSchema"&CHR(34 )&" "& _
"xmlns:soap="&CHR(34)&" http://schemas.xmlsoap.org/soap/envelope/"&CHR(34 )&">"& _
"<soap:Body>"& _
"<LoginByAccount xmlns="&CHR(34)&" http://tempuri.org/"&CHR(34 )&">"& _
"<اسم المستخدم>"&اسم المستخدم&"</اسم المستخدم>"& _
"<password>"&password&"</password>"& _
"</LoginByAccount>"& _
"</soap:Body>"& _
"</soap:Envelope>"
تعيين xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST"، عنوان URL، خطأ
xmlhttp.setRequestHeader "نوع المحتوى"، "text/xml؛charset=utf-8"
xmlhttp.setRequestHeader "HOST"، "192.100.100.81"
xmlhttp.setRequestHeader "طول المحتوى"،LEN(SoapRequest)
xmlhttp.setRequestHeader "SOAPAction", " http://tempuri.org/LoginByAccount " 'يجب أن تكون نفس مساحة الاسم مثل WEBSERVICE، وإلا فسيتم رفض الخدمة
xmlhttp.Send(طلب الصابون)
'يرسل هذا بنجاح طلب SOAP يطابق مثال SOAP باستخدام XMLHTTP.
'تحقق مما إذا كان ناجحًا:
الاستجابة.اكتب xmlhttp.Status&” ”
الاستجابة.اكتب xmlhttp.StatusText
اضبط xmlhttp = لا شيء
%>
في حالة النجاح، سيتم عرض 200 موافق. إذا لم ينجح ذلك، سيتم عرض 500 خطأ داخلي في الخادم: استمرار التشغيل.
بعد النجاح يمكنك استخدام استجابة WEBSERVICE كما يلي:
مثال لاستجابة SOAP يوجد أدناه مثال لاستجابة SOAP. يجب استبدال العناصر النائبة المعروضة بالقيم الفعلية.
HTTP/1.1200 موافق
نوع المحتوى: text/xml;
طول المحتوى: الطول
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd=" http://www.w3.org/2001/XMLSchema " xmlns:soap=" http //schemas.xmlsoap.org/soap/envelope/ ">
<الصابون: الجسم>
<LoginByAccountResponse xmlns=" http://tempuri.org/ ">
<LoginByAccountResult>سلسلة</LoginByAccountResult>
</LoginByAccountResponse>
</الصابون: الجسم>
</soap:Envelope>
هذا هو مثال استجابة SOAP المطابق لمثال طلب SOAP الآن، وبعد إرسال الطلب بنجاح، يمكنك عرض الاستجابة:
إذا كان xmlhttp.Status = 200، فقم
بتعيين xmlDOC =server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
xmlStr = xmlDOC.xml
اضبط xmlDOC=لا شيء
xmlStr = استبدال(xmlStr،"<"،<")
xmlStr = استبدال(xmlStr،">"،>")
استجابة.كتابة xmlStr
أخرى.اكتب
xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
إذا كان الطلب صحيحًا، فسيتم تقديم استجابة كاملة. وإذا كان الطلب غير صحيح (على سبيل المثال، رقم الحساب وكلمة المرور غير صحيحين)، فسيكون محتوى الاستجابة غير كامل.
احصل على البيانات في الرد كما يلي:
إذا كان xmlhttp.Status = 200، فقم
بتعيين xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlDOC.documentElement.selectNodes("//LoginByAccountResult")(0).text 'عرض البيانات حيث تكون العقدة LoginByAccountResult (إذا تم تشفيرها، فيجب فك تشفيرها)
تعيين xmlDOC = لا شيء
آخر
Response.Write xmlhttp.Status&" "
الاستجابة.اكتب xmlhttp.StatusText
End if
يعرض وظيفة كل سمة وبيانات للعقدة:
الوظيفة showallnode(rootname,myxmlDOC)' آمل أن يستمر الجميع في إكمالها 2005-1-9 المكتوبة بواسطة 844
إذا rootname<>"" ثم
قم بتعيين العقدةobj=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"")'كائن العقدة الحالية
NodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"").attributes.length'العدد الحالي لسمات العقدة
returnstring=returnstring&"<BR>اسم العقدة: "&rootname
ifNodeobj.text<>"" ثم
returnstring=returnstring&"<BR>نص العقدة: ("&nodeobj.text&")"
النهاية إذا كانت
returnstring=returnstring&"<BR>{<BR>"
إذا كانت العقدة Attributelen<>0 ثم
returnstring=returnstring&"<BR>هناك سمات "&nodeAttributelen&"، وهي: "
end if
for i=0 tonodeAttributelen-1
returnstring=returnstring&"<li>"&nodeobj.attributes(i).Name&": "&nodeobj.getAttribute(nodeobj.attributes(i).Name)&" </li>"
التالي
إذا كان العقدة obj.childNodes.Length<>0 ثم
إذا كانتNodeobj.hasChildNodes() وlcase(nodeobj.childNodes.item(0).nodeName)<>"#text" ثم ما إذا كانت هناك عقد فرعية
تعيين Childnodeobj=nodeobj.childNodes
Childnodelen=nodeobj.childNodes.Length
returnstring=returnstring&"<BR><BR>توجد عقد فرعية "&childnodelen&";<BR>وهي: "
لـ i=0 إلى Childnodelen-1
returnstring=returnstring&"<li>"&childnodeobj.item(i).nodeName&"</li>"
التالي
نهاية إذا
النهاية إذا
returnstring=returnstring&"<BR><BR>"
استجابة. كتابة سلسلة الإرجاع
تعيين العقدةobj=لا شيء
نهاية إذا
وظيفة النهاية
يمكن استخدامه مثل هذا:
إذا كان xmlhttp.Status = 200، فقم
بتعيين xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "LoginByAccountResponse"،xmlDOC'Call SHOWALLNODE
تعيين xmlDOC = لا شيء
آخر
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
2. مثال لطلب POST
بوست HTTP
فيما يلي مثال لطلب HTTP POST. يجب استبدال العناصر النائبة المعروضة بالقيم الفعلية.
POST /WebService1/UserSignOn.asmx/LoginByAccount HTTP/1.1
المضيف: 192.100.100.81
نوع المحتوى: application/x-www-form-urlencoded
طول المحتوى: طول
اسم المستخدم = السلسلة وكلمة المرور = السلسلة
إنشاء طلب POST:
<%
url = " http://192.100.100.81/WebService1/UserSignOn.asmx/LoginByAccount "
SoapRequest = "username = "&username&"&password = "&
تعيين كلمة المرور xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST"، عنوان URL، خطأ
xmlhttp.setRequestHeader "نوع المحتوى"، "application/x-www-form-urlencoded"'ملاحظة
xmlhttp.setRequestHeader "HOST"، "192.100.100.81"
xmlhttp.setRequestHeader "طول المحتوى"،LEN(SoapRequest)
xmlhttp.Send(SoapRequest)
'يرسل هذا بنجاح طلب POST يطابق مثال HTTP POST باستخدام XMLHTTP.
'تحقق مما إذا كان ناجحًا:
الاستجابة.اكتب xmlhttp.Status&” ”
الاستجابة.اكتب xmlhttp.StatusText
اضبط xmlhttp = لا شيء
%>
في حالة النجاح، سيتم عرض 200 موافق. إذا لم ينجح ذلك، سيتم عرض 500 خطأ داخلي في الخادم: استمرار التشغيل.
بعد النجاح يمكنك استخدام استجابة WEBSERVICE كالتالي:
بوست HTTP
فيما يلي مثال لاستجابة HTTP POST. يجب استبدال العناصر النائبة المعروضة بالقيم الفعلية.
HTTP/1.1200 موافق
نوع المحتوى: text/xml;
طول المحتوى: الطول
<?xml version="1.0" encoding="utf-8"?>
<string xmlns=" http://tempuri.org/">string</string >
يعرض:
إذا كان xmlhttp.Status = 200، فقم
بتعيين xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "string"، xmlDOC'call SHOWALLNODE
تعيين xmlDOC = لا شيء
آخر
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
ما ورد أعلاه هو الأسلوب الذي يستخدمه ASP لمكون XMLHTTP لإرسال طلب SOAP والاتصال بـ WEBSERVICE. أوصي باستخدام الطريقة الأولى في بيئة ASP، يرجى الاتصال بي على mailto: [email protected] طريقة HTTP GET ستكون هناك مشاكل مع اللغة الصينية، وكمية البيانات ليست كبيرة. يبدو استخدام طريقة HTTP POST غير ضروري. في الواقع، يستخدم المثال أعلاه طريقة POST، لكنه ليس طلب POST. لاستخدام SOAP TOOLKIT، تحتاج إلى تثبيت البرنامج، ولا يوجد إصدار لاحق. ---نهاية النص الكامل