دوستان و همراهان عزیز وب سایت آموزشی پی وی لرن، با آموزش وب سرویس soap در خدمتتون خواهیم بود. با بررسی Encoding در soap همراه خواهیم بود.
SOAP شامل مجموعه ای از قوانین برای رمزگذاری انواع داده ها است. این پیام SOAP را قادر می سازد انواع داده های خاص ، مانند اعداد صحیح ، شناور ، دابل یا آرایه را نشان دهد.
برای انواع Scalar (مقیاس پذیر)، SOAP کلیه انواع Simple داخلی را که با مشخصات XML Schema مشخص شده اند ، تصویب می کند. این شامل رشته ها ، شناورها (float) ، دابل ها (double) و اعداد صحیح (integer) است.
در جدول زیر انواع Simple اصلی ، استخراج شده از /XML Schema Part 0 − Primer http://www.w3.org/TR/2000/WD-xmlschema-0-20000407 آمده است.
Simple Types Built-In to XML Schema | ||
---|---|---|
Simple Type | مثال ها | |
string | Confirm this is electric. | |
boolean | true, false, 1, 0. | |
float | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN. | |
double | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN. | |
decimal | -۱٫۲۳, ۰, ۱۲۳٫۴, ۱۰۰۰٫۰۰٫ | |
binary | ۱۰۰۰۱۰ | |
integer | -۱۲۶۷۸۹, -۱, ۰, ۱, ۱۲۶۷۸۹٫ | |
nonPositiveInteger | -۱۲۶۷۸۹, -۱, ۰٫ | |
negativeInteger | -۱۲۶۷۸۹, -۱٫ | |
long | -۱, ۱۲۶۷۸۹۶۷۵۴۳۲۳۳ | |
int | -۱, ۱۲۶۷۸۹۶۷۵ | |
short | -۱, ۱۲۶۷۸ | |
byte | -۱, ۱۲۶ | |
nonNegativeInteger | ۰, ۱, ۱۲۶۷۸۹ | |
unsignedLong | ۰, ۱۲۶۷۸۹۶۷۵۴۳۲۳۳ | |
unsignedInt | ۰, ۱۲۶۷۸۹۶۷۵۴ | |
unsignedShort | ۰, ۱۲۶۷۸ | |
unsignedByte | ۰, ۱۲۶ | |
positiveInteger | ۱, ۱۲۶۷۸۹٫ | |
date | ۱۹۹۹-۰۵-۳۱, —۰۵٫ | |
time | ۱۳:۲۰:۰۰٫۰۰۰, ۱۳:۲۰:۰۰٫۰۰۰-۰۵:۰۰ |
به عنوان مثال ، در این جا یک پاسخ SOAP با یک نوع داده double آورده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version = '1.0' encoding = 'UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:getPriceResponse xmlns:ns1 = "urn:examples:priceservice" SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding"> <return xsi:type = "xsd:double">54.99</return> </ns1:getPriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
آرایه های SOAP دارای مجموعه ای از قوانین کاملاً خاص هستند که لازم است شما هم نوع عنصر و هم اندازه آرایه را مشخص کنید. SOAP همچنین از آرایه های چند بعدی پشتیبانی می کند ، اما همه پیاده سازی ها SOAP از قابلیت های چند بعدی پشتیبانی نمی کنند.
برای ایجاد یک آرایه ، باید آن را به عنوان xsi:type آرایه مشخص کنید. آرایه همچنین باید یک ویژگی arrayType را شامل شود. این ویژگی برای مشخص کردن نوع داده ها برای عناصر موجود و ابعاد (های) آرایه لازم است.
به عنوان مثال ، ویژگی زیر آرایه ای از ۱۰ مقدار double را مشخص می کند.
1 | arrayType = "xsd:double[10]" |
در مقابل ، ویژگی زیر یک رشته دو بعدی از زشته را مشخص می کند.
1 | arrayType = "xsd:string[5,5]" |
در این جا نمونه ای از پاسخ SOAP با آرایه ای از مقادیر double وجود دارد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?xml version = '1.0' encoding = 'UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:getPriceListResponse xmlns:ns1 = "urn:examples:pricelistservice" SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding"> <return xmlns:ns2 = "http://www.w3.org/2001/09/soap-encoding" xsi:type = "ns2:Array" ns2:arrayType = "xsd:double[2]"> <item xsi:type = "xsd:double">54.99</item> <item xsi:type = "xsd:double">19.99</item> </return> </ns1:getPriceListResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
سازه ها حاوی مقادیر مختلف هستند ، اما هر عنصر با یک عنصر accessor منحصر به فرد مشخص می شود. به عنوان مثال ، یک آیتم با کاتالوگ محصول را در نظر بگیرید. در این حالت ، ساختار-struct ممکن است حاوی یک محصول SKU ، نام محصول ، توضیحات و قیمت باشد. در این جا نحوه نمایش چنین ساختاری در پیام SOAP ارائه می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xml version = '1.0' encoding = 'UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:getProductResponse xmlns:ns1 = "urn:examples:productservice" SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding"> <return xmlns:ns2 = "urn:examples" xsi:type = "ns2:product"> <name xsi:type = "xsd:string">Red Hat Linux</name> <price xsi:type = "xsd:double">54.99</price> <description xsi:type = "xsd:string"> Red Hat Linux Operating System </description> <SKU xsi:type = "xsd:string">A358185</SKU> </return> </ns1:getProductResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
توجه – ضمن نوشتن كدSOAP خود ، لطفاً مراقب تورفتگي مناسب باشيد. هر عنصر در یک struct با یک نام accessor منحصر به فرد مشخص می شود. به عنوان مثال ، پیام فوق شامل چهار عنصر accessor- نام ، قیمت ، توضیحات و SKU است. هر عنصر می تواند نوع داده خاص خود را داشته باشد. به عنوان مثال ، نام به عنوان یک رشته مشخص شده است ، در حالی که قیمت double است.
بررسی Encoding در soap را به پایان می رسانیم.
بررسی Encoding در soap را در این بخش از آموزش وب سرویس soap بیان نمودیم. در بخش بعد به بررسی Transport یا انتقال می پردازیم.