توضیح Envelope، Header و Body در یک پیام SOAP
یک پیام SOAP شامل سه بخش اصلی است: Envelope، Header و Body. هر یک از این بخشها نقش خاصی در ساختار پیام ایفا میکنند و با همکاری یکدیگر پیام را به درستی انتقال میدهند. در اینجا به توضیح هر یک از این بخشها میپردازیم:
1. Envelope (پوسته)
Envelope به عنوان بخش اصلی هر پیام SOAP عمل میکند. این بخش مانند یک پوسته است که تمام پیام را در بر میگیرد و مرزهایی برای تعریف پیام ایجاد میکند. در واقع، Envelope تعیینکننده آغاز و پایان یک پیام SOAP است و اطمینان حاصل میکند که پیام به درستی از فرستنده به گیرنده منتقل میشود.
در داخل Envelope، دو بخش دیگر نیز وجود دارند:
-
Header (اختیاری)
-
Body (الزامی)
نمونه ساختار Envelope:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<!-- Header و Body در اینجا قرار دارند -->
</soapenv:Envelope>
2. Header (سرآیند)
Header یک بخش اختیاری در پیام SOAP است که اطلاعات اضافی و متا دادهها را حمل میکند. این اطلاعات میتواند شامل مواردی مانند:
-
اطلاعات امنیتی (مثلاً امضای دیجیتال یا احراز هویت)
-
مدیریت تراکنشها
-
تنظیمات خاص ارتباطی
-
ویژگیهای اضافی که نیاز به پردازش خاص در هنگام دریافت پیام دارند
Header معمولاً برای پیادهسازی قابلیتهای اضافی یا مدیریت پیام استفاده میشود و لزوماً برای هر پیام SOAP ضروری نیست.
نمونه ساختار Header:
<soapenv:Header>
<web:Security>
<!-- اطلاعات امنیتی در اینجا قرار میگیرند -->
</web:Security>
</soapenv:Header>
3. Body (بدنه)
Body محتوای اصلی پیام SOAP است و حاوی دادهها یا اطلاعاتی است که باید به مقصد ارسال شوند. این بخش برای انتقال دادههای واقعی، درخواستها و پاسخها مورد استفاده قرار میگیرد. در واقع، Body مهمترین بخش پیام است و حاوی اطلاعاتی است که برای پردازش توسط سرویس گیرنده یا سرور ضروری است.
اگر مشکلی در پردازش پیام وجود داشته باشد، اطلاعات مربوط به خطاها (Fault) معمولاً در این بخش قرار میگیرند.
نمونه ساختار Body:
<soapenv:Body>
<web:Request>
<web:Data>Some data here</web:Data>
</web:Request>
</soapenv:Body>
نمونه واقعی پیام SOAP:
فرض کنید که ما در حال ارسال یک درخواست برای بررسی موجودی یک حساب بانکی هستیم. پیام SOAP برای این درخواست ممکن است به صورت زیر باشد:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.example.com/banking">
<soapenv:Header>
<web:AuthHeader>
<web:Username>johndoe</web:Username>
<web:Password>securepassword123</web:Password>
</web:AuthHeader>
</soapenv:Header>
<soapenv:Body>
<web:GetAccountBalance>
<web:AccountNumber>1234567890</web:AccountNumber>
</web:GetAccountBalance>
</soapenv:Body>
</soapenv:Envelope>
توضیح بخشها:
-
Envelope: در اینجا، تگ
<soapenv:Envelope>
مشخص میکند که این پیام یک پیام SOAP است. فضای نامxmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
برای شناسایی SOAP استفاده میشود. -
Header:
در اینجا، بخش Header اطلاعات امنیتی و احراز هویت را در قالبAuthHeader
حمل میکند. این اطلاعات شامل نام کاربری و رمز عبور برای احراز هویت درخواست است. این بخش اختیاری است و در اینجا برای مثال استفاده شده است. -
Body:
در این بخش، محتوای اصلی درخواست قرار دارد. در این مثال، درخواست برای گرفتن موجودی حساب با شماره حساب مشخص شده است. این بخش شامل اطلاعات واقعی است که باید بین کلاینت و سرور رد و بدل شوند.