دوستان و همراهان عزیز وب سایت آموزشی پی وی لرن، با آموزش وب سرویس soap در خدمتتون خواهیم بود. در این بخش با مبحث انتقال یا Transport در soap همراه خواهیم بود.
SOAP به هیچ پروتکل انتقالی گره نخورده است. SOAP را می توان از طریق SMTP ، FTP ، MQSeries IBM یا (Microsoft Message Queuing (MSMQ انتقال داد.
مشخصات SOAP شامل جزئیاتی فقط در HTTP است. HTTP محبوب ترین پروتکل انتقال SOAP است.
کاملا منطقی ، درخواست های SOAP از طریق درخواست HTTP ارسال می شوند و پاسخ های SOAP درون محتوای پاسخ HTTP بازگردانده می شوند. در حالی که درخواست های SOAP می توانند از طریق HTTP GET ارسال شوند ، مشخصات فقط شامل جزئیاتی فقط در HTTP POST است.
علاوه بر این ، درخواست و پاسخ HTTP لازم است تا نوع محتوا بر روی text/xml تنظیم شود.
مشخصات SOAP حکم می کند که مشتری باید یک عنوان SOAPAction تهیه کند ، اما مقدار واقعی عنوان SOAPAction به اجرای سرور SOAP بستگی دارد.
به عنوان مثال ، برای دسترسی به سرویس AltaVista BabelFish Translation به میزبانی XMethods ، باید موارد زیر را به عنوان یک هدر SOAPAction مشخص کنید.
1 | urn:xmethodsBabelFish#BabelFish |
حتی اگر سرور به یک هدر کامل SOAPAction احتیاج نداشته باشد ، مشتری باید یک رشته خالی (“”) یا یک مقدار null را مشخص کند. به عنوان مثال:
1 2 | SOAPAction: "" SOAPAction: |
در این جا یک نمونه درخواست ارسال شده از طریق HTTP به سرویس XMethods Babelfish Translation آورده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | POST /perl/soaplite.cgi HTTP/1.0 Host: services.xmethods.com Content-Type: text/xml; charset = utf-8 Content-Length: 538 SOAPAction: "urn:xmethodsBabelFish#BabelFish" <?xml version = '1.0' encoding = 'UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:BabelFish xmlns:ns1 = "urn:xmethodsBabelFish" SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"> <translationmode xsi:type = "xsd:string">en_fr</translationmode> <sourcedata xsi:type = "xsd:string">Hello, world!</sourcedata> </ns1:BabelFish> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
به نوع محتوا و هدر SOAPAction توجه کنید. همچنین توجه داشته باشید که روش BabelFish به دو پارامتر String نیاز دارد. حالت ترجمه en_fr translates از انگلیسی به فرانسوی ترجمه می کند.
در این جا پاسخی از XMethods آمده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | HTTP/1.1 200 OK Date: Sat, 09 Jun 2001 15:01:55 GMT Server: Apache/1.3.14 (Unix) tomcat/1.0 PHP/4.0.1pl2 SOAPServer: SOAP::Lite/Perl/0.50 Cache-Control: s-maxage = 60, proxy-revalidate Content-Length: 539 Content-Type: text/xml <?xml version = "1.0" encoding = "UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd = "http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <namesp1:BabelFishResponse xmlns:namesp1 = "urn:xmethodsBabelFish"> <return xsi:type = "xsd:string">Bonjour, monde!</return> </namesp1:BabelFishResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
پاسخ های SOAP که از طریق HTTP تحویل داده می شوند ، باید همان کد وضعیت HTTP را دنبال کنند. به عنوان مثال ، کد وضعیت OK 200 نشانگر یک پاسخ موفق است. کد وضعیت ۵۰۰ Internal Server Error نشان می دهد که یک خطای سرور وجود دارد و پاسخ SOAP شامل یک عنصر Fault است.
مبحث انتقال یا Transport در soap را در این بخش از آموزش وب سرویس soap مورد بررسی قرار دادیم. در بخش بعد به بررسی مثال هایی می پردازیم.