لقد استلمت نقطة نهاية SOAP: قد تكون محول عملات قديمًا يعتمد عليه فريق الفوترة، أو خدمة لإدارة الطلبات لدى شريك يعمل بـ .NET. المطلوب ليس مجرد استدعائها، بل التحقق من أن الاستجابة تطابق العقد وأنها تستمر بالعمل مع تغيّر الكود المحيط بها. تختلف SOAP عن REST لأنها تتطلب غلاف XML كاملًا، ورأس Content-Type مناسبًا، وغالبًا ملف WSDL يصف العمليات والمعاملات.
يدعم Apidog طلبات SOAP وخدمات الويب إلى جانب REST وGraphQL وgRPC. في هذا الدليل ستتعلم مسارين عمليين:
- إرسال طلب SOAP يدويًا.
- استيراد ملف WSDL لإنشاء البيئة ونقاط النهاية تلقائيًا.
للمقارنة بين البروتوكولات، راجع REST وGraphQL وgRPC وSOAP. وللتعريف الرسمي لبنية SOAP، ارجع إلى مواصفات W3C SOAP.
ما هو SOAP، ولماذا يحتاج إلى معالجة مختلفة؟
SOAP، أو Simple Object Access Protocol، بروتوكول اتصال قائم على XML يتيح للأنظمة واللغات المختلفة التفاعل من خلال عقد محدد. على سبيل المثال، يمكن لعميل Java استدعاء خدمة .NET بالاعتماد على نفس الرسائل والعمليات الموصوفة في العقد.
عند اختبار SOAP، ركّز على هذه الخصائص:
- الرسائل عبارة عن مستندات XML منظمة، وليست JSON.
- يعمل غالبًا عبر HTTP أو HTTPS.
- يفرض بنية صارمة للغلاف والعمليات والمعاملات.
- يمكن أن يستخدم WS-Security للرسائل الموثقة أو المشفرة.
إذا لم تكن معتادًا على XML، فابدأ بـمرجع XML من MDN.
لذلك لا يكفي إرسال طلب بأسلوب REST عادي. تحتاج إلى:
- عنوان نقطة النهاية الصحيح.
- رأس
Content-Typeالمناسب. - جسم XML يحتوي غلاف SOAP.
- قراءة استجابة XML والتحقق من العقد المتوقعة.
لشرح أعمق للغلاف والجسم، راجع واجهات برمجة تطبيقات SOAP وXML.
قبل أن تبدأ
يتطلب إرسال طلبات SOAP وWebService في Apidog الإصدار 2.1.31 أو أحدث.
تحقق من إصدار التطبيق ثم حدّثه عند الحاجة. الخطوات التالية تفترض أنك تستخدم إصدارًا حديثًا.
قبل الاختبار، جهّز المعلومات التالية:
- عنوان URL لنقطة النهاية.
- اسم العملية، مثل
GetOrderStatus. - المعاملات المطلوبة.
- ملف WSDL إن كان متوفرًا.
يمكنك الرجوع إلى مواصفات WSDL 2.0 لفهم بنية الملف.
المسار أ: إرسال طلب SOAP يدويًا
استخدم هذا المسار عندما تعرف عنوان الخدمة والعملية التي تريد استدعاءها.
الخطوة 1: أضف رأس Content-Type
أضف الرأس يدويًا من قسم Headers في الطلب.
القيم الشائعة هي:
text/xml; charset=utf-8
أو:
application/soap+xml
كقاعدة عملية:
- تستخدم خدمات SOAP 1.1 غالبًا:
text/xml; charset=utf-8
- تستخدم خدمات SOAP 1.2 غالبًا:
application/soap+xml
تحقق من WSDL أو وثائق الخدمة. إذا أعادت الخدمة خطأ متعلقًا بنوع المحتوى، جرّب القيمة الأخرى.
الخطوة 2: اضبط الجسم على XML وأضف غلاف SOAP
اضبط Body format على xml، ثم أضف غلاف SOAP.
مثال لعملية NumberToWords التي تستقبل المعامل ubiNum:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.dataaccess.com/webservicesserver/">
<soap:Body>
<web:NumberToWords>
<web:ubiNum>1234</web:ubiNum>
</web:NumberToWords>
</soap:Body>
</soap:Envelope>
اقرأ البنية بهذا الشكل:
-
soap:Envelope: الغلاف الخارجي للرسالة. -
soap:Body: يحتوي العملية الفعلية. -
web:NumberToWords: العملية المستدعاة. -
web:ubiNum: قيمة الإدخال. -
xmlns:web: مساحة الاسم التي يجب أن تطابق تعريف الخدمة.
لا تخمّن مساحة الاسم؛ انسخها من WSDL أو من مثال رسمي للخدمة.
الخطوة 3: أرسل الطلب وتحقق من XML
بعد الإرسال، ستتلقى استجابة XML داخل غلاف SOAP مشابه لهذا:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:NumberToWordsResponse xmlns:m="http://www.dataaccess.com/webservicesserver/">
<m:NumberToWordsResult>one thousand two hundred and thirty four</m:NumberToWordsResult>
</m:NumberToWordsResponse>
</soap:Body>
</soap:Envelope>
تحقق عمليًا من الآتي:
- وجود
soap:Envelope. - وجود عقدة العملية مع لاحقة
Response. - وجود عنصر النتيجة، مثل
NumberToWordsResult. - تطابق القيمة مع النتيجة المتوقعة.
يمكنك الرجوع إلى webservice.apidog.io لمزيد من أمثلة أغلفة SOAP وإعدادات خدمات الويب.
تطبيق النمط على خدمة حقيقية
لن تتغير الآلية عند التعامل مع خدمات مختلفة.
مثال لتحويل العملات:
<soap:Body>
<web:ConvertCurrency>
<web:fromCurrency>USD</web:fromCurrency>
<web:toCurrency>EUR</web:toCurrency>
<web:amount>100</web:amount>
</web:ConvertCurrency>
</soap:Body>
مثال للحصول على حالة طلب:
<soap:Body>
<ord:GetOrderStatus>
<ord:orderId>ORD-1001</ord:orderId>
</ord:GetOrderStatus>
</soap:Body>
في كل حالة، اتبع التسلسل نفسه:
- أضف
Content-Type. - أضف غلاف XML.
- أرسل الطلب.
- تحقق من استجابة XML.
المسار ب: استيراد ملف WSDL لتوليد نقاط النهاية
كتابة الأغلفة يدويًا مناسبة لعملية واحدة أو اختبار سريع. أما إذا كانت الخدمة تعرض عشرات العمليات، فاستورد ملف WSDL ليقرأ Apidog العمليات والمدخلات وعنوان الخدمة.
اتبع هذه الخطوات:
- افتح Settings.
- اختر Import Data.
- اختر
WSDL. - حمّل ملفًا بامتداد
.wsdlأو.xml. - راجع معاينة نقاط النهاية التي تم تحليلها.
- افتح تبويب
Environments. - تحقق من عنوان الخدمة.
- انقر
Confirm. - اختر البيئة المستوردة من الزاوية العلوية اليمنى.
- أرسل الطلب؛ سيتم تطبيق
Base URLمن البيئة تلقائيًا.
تحقق من عنوان الخدمة قبل التأكيد
تعد هذه الخطوة مهمة لأن WSDL قد يحتوي على:
- عنوان بيئة مرحلية.
- عنوان URL قديم.
- مضيف نائب لم يتم تحديثه.
إذا كان العنوان خاطئًا، ستتجه جميع الطلبات المستوردة إلى الخادم الخطأ. صححه في Environments قبل النقر على Confirm.
فعّل البيئة المستوردة
بعد الاستيراد، اختر البيئة الجديدة من أعلى الواجهة. تحتوي هذه البيئة على Base URL الذي ستستخدمه الطلبات المستوردة.
إذا لم تكن البيئة مفعّلة، قد تفشل الطلبات بسبب غياب العنوان الأساسي.
بعد الاستيراد، ستظهر كل عملية SOAP كنقطة نهاية قابلة للاستدعاء. يمكنك إرسالها والتحقق من استجابة XML بالطريقة نفسها المستخدمة في المسار اليدوي.
إذا كنت تنقل مشروعًا كاملًا، راجع دليل استيراد مشاريع SOAP.
ملاحظة: الاستيراد الموثق يدعم رفع ملفات
.wsdlو.xml. لا تفترض دعم استيراد WSDL من URL أو بلصق محتواه مباشرة؛ حمّل الملف بدلًا من ذلك.
الانتقال من SoapUI
إذا كانت اختبارات SOAP موجودة في SoapUI، احتفظ بملف WSDL أو صدّره ثم استورده في Apidog باستخدام المسار السابق.
النتيجة هي عمليات SOAP قابلة للاستدعاء ضمن مساحة عمل يمكن أن تضم أيضًا:
- نقاط نهاية REST.
- طلبات GraphQL.
- سيناريوهات اختبار.
- توثيق API.
- بيئات متعددة.
للمقارنة بين سير العمل، راجع Apidog وSoapUI.
التأكيدات وسيناريوهات الاختبار
نجاح طلب واحد يثبت أن نقطة النهاية متاحة، لكنه لا يثبت أن الاستجابة صحيحة. أضف تأكيدات للتحقق من العقد والقيم.
مثال لخدمة تحويل العملات:
- تحقق من وجود عقدة الاستجابة.
- استخرج المبلغ المحوّل.
- تحقق من أنه رقم.
- تحقق من أنه يقع ضمن النطاق المتوقع.
مثال لخدمة الطلبات:
- تحقق من وجود
GetOrderStatusResponse. - استخرج قيمة الحالة.
- تحقق من أنها واحدة من الحالات المسموح بها، مثل
PendingأوCompleted.
بعد ذلك، أنشئ سيناريو قابلًا للتكرار، مثل:
- إنشاء طلب.
- حفظ معرّف الطلب من الاستجابة.
- تمرير المعرّف إلى
GetOrderStatus. - التحقق من تغير الحالة أو بقائها ضمن القيم المتوقعة.
يوضح دليل كتابة سيناريو اختبار باستخدام Apidog كيفية استخراج القيم وتمريرها بين الطلبات.
يمكن أن يجمع السيناريو بين SOAP وREST، مثل إنشاء مورد عبر REST ثم التحقق من حالته عبر خدمة SOAP.
التعامل مع WS-Security
بالنسبة لنقاط النهاية الآمنة، تستخدم خدمات SOAP غالبًا WS-Security. يكون رأس الأمان جزءًا من غلاف SOAP نفسه.
أضف كتلة wsse داخل soap:Header، ثم أرسل الغلاف كاملًا في جسم XML:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soap:Header>
<wsse:Security>
<!-- بيانات الأمان المطلوبة من الخدمة -->
</wsse:Security>
</soap:Header>
<soap:Body>
<!-- العملية والمعاملات -->
</soap:Body>
</soap:Envelope>
تظل خطوات الإرسال كما هي:
- اضبط
Content-Type. - أضف الغلاف كاملًا، بما فيه رأس الأمان.
- أرسل الطلب.
- تحقق من الاستجابة.
أتمتة سير العمل باستخدام Apidog CLI
بعد حفظ طلبات SOAP أو الطلبات المستوردة من WSDL داخل سيناريوهات اختبار، يمكنك استخدام Apidog CLI لتشغيل السيناريوهات من سطر الأوامر.
يتطلب CLI استخدام Node.js v16 أو أحدث.
ثبّت الأداة ثم سجّل الدخول:
npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
شغّل سيناريو اختبار محفوظًا مقابل بيئة محددة:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli
المعاملات المستخدمة:
-
-t: معرّف سيناريو الاختبار. -
-e: معرّف البيئة. -
-r: نوع التقرير، مثلcliأوhtmlأوjunit.
يمكن فصل عدة تقارير بفواصل.
توضح الوثائق تنفيذ سيناريوهات ومجموعات اختبار محفوظة، لكنها لا تذكر صراحة تشغيل السيناريوهات المبنية على خطوات SOAP دون واجهة رسومية. لذلك، تحقّق من سيناريوهاتك في بيئة CI قبل الاعتماد عليها كتنفيذ خاص بـ SOAP.
لربط CLI بخط أنابيب CI/CD، راجع دليل Apidog CLI CI/CD.
الأسئلة الشائعة
ما قيمة Content-Type المناسبة لطلب SOAP؟
استخدم إحدى القيمتين:
text/xml; charset=utf-8
أو:
application/soap+xml
تستخدم SOAP 1.1 غالبًا القيمة الأولى، بينما تستخدم SOAP 1.2 غالبًا الثانية. راجع WSDL أو وثائق الخدمة، وبدّل القيمة إذا تلقيت خطأ متعلقًا بنوع المحتوى.
هل أحتاج إلى خطة مدفوعة لاختبار SOAP في Apidog؟
الشرط الموثق هو استخدام Apidog بالإصدار 2.1.31 أو أحدث. لا تذكر المعلومات المتاحة قيودًا على الخطط أو الاستضافة الذاتية لدعم SOAP أو WSDL.
هل يمكن استيراد WSDL من URL؟
الاستيراد الموثق يدعم رفع ملفات .wsdl و.xml. لا تعتمد على URL أو لصق محتوى WSDL ما لم يكن ذلك مدعومًا في واجهتك؛ حمّل الملف مباشرة.
كيف أختبر SOAP وREST في المشروع نفسه؟
يمكن أن تحتوي مساحة العمل نفسها على طلبات SOAP ونقاط نهاية REST وطلبات GraphQL. كما يمكن لسيناريو اختبار تمرير بيانات بين طلبات من بروتوكولات مختلفة.
إذا كنت تعمل أيضًا مع GraphQL، راجع دليل اختبار واجهات برمجة تطبيقات GraphQL في Apidog.
لماذا تصل طلبات WSDL المستوردة إلى الخادم الخطأ؟
السببان الأكثر شيوعًا هما:
- عنوان الخدمة في
Environmentsكان خاطئًا وقت الاستيراد. - لم يتم تفعيل البيئة المستوردة من الزاوية العلوية اليمنى.
أعد التحقق من عنوان الخدمة، ثم فعّل البيئة الصحيحة قبل إرسال الطلبات.
خاتمة
يمكنك اختبار SOAP في Apidog بطريقتين:
-
يدويًا: عيّن
Content-Type، واضبط الجسم علىxml، وأضف الغلاف، ثم تحقق من الاستجابة. - عبر WSDL: حمّل الملف، وراجع البيئة وعنوان الخدمة، ثم استخدم العمليات التي تم إنشاؤها تلقائيًا.
كلا المسارين يحققان الهدف نفسه: اختبار قابل للتكرار يثبت أن خدمة الويب ما زالت ملتزمة بعقدها.
نزّل Apidog بالإصدار 2.1.31 أو أحدث، واستورد ملف WSDL، وضع خدمات SOAP ضمن سير الاختبار نفسه الذي تستخدمه لبقية واجهات برمجة التطبيقات.
Top comments (0)