Truyền tải SOAP qua HTTP

Một phần của tài liệu giao thức quản lý mạng và công nghệ dịch vụ web thực hiện khai thác đường dây thuê bao (Trang 59 - 61)

SOAP không phân biệt bất kỳ giao thức truyền tải nào. Trên thực tế, SOAP có thể ñược truyền tải qua SMTP, FTP, MQSeries của IBM, Microsoft Message Queue(MMQ). Tuy nhiên, ñặc tả SOAP chỉ mô tả chi tiết về HTTP và nó là giao thức truyền tài SOAP phổ biến. Các yêu cầu SOAP ñược gửi qua yêu cầu HTTP và các phản hồi SOAP ñược trả về trong nội dung của phản hồi HTTP. Mặc dù các yêu cầu SOAP có thể ñược gửi qua HTTP GET, nhưng ñặc tả SOAP chỉ mô tả chi tiết HTTP POST(HTTP POST ñược ưu tiên hơn bởi vì hầu hết các máy chủ ñặt yêu cầu hạn chế ký tự trên các yêu cầu GET). Thêm nữa, cả hai yêu cầu và phản hồi HTTP phải ñược thiết lập kiểu nội dung là text/xml. Như một yêu cầu bổ sung, các máy trạm phải chỉ rõ một SOAP Action header. SOAP Action header là một URI ñược sử dụng ñể chỉ ra mục ñích của yêu cầu. ðiều này làm nó có xác ñịnh nhanh bản chất của một yêu cầu SOAP, không cần phải kiểm tra nội dung thông ñiệp SOAP[8].

ðặc tả SOAP yêu cầu máy trạm phải cung cấp một SOAP Action header, nhưng giá trị thực của nó bị phụ thuộc triển khải trên máy chủ SOAP. ví dụ, ñể truy

61

nhập dịch vụ AltaVista BabelFish Translation ñược cài ñặt bằng Xmethods, bạn phải chỉ rõ urn:xmethodsBabelFish#BabelFish như một SOAP Action header. Thậm trí nếu máy chủ không yêu cầu một SOAP Action header ñầy ñủ, máy trạm phải chỉ rõ một chuỗi trống hoặc ñặt giá trị rỗng. Ví dụ:

SOAPAction: "" SOAPAction:

Ví dụ ñơn giản về yêu cầu ñược gửi qua HTTP tới dịch vụ XMethods Babelfish Translation[8].

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>

Chú ý: Content-Type, SOAPAction, và phương thức BabeFish yêu cầu hai tham số kiểu chuỗi. Chế ñộ thông dịch en_fr sẽ thông dịch từ tiếng Anh sang tiếng Pháp. ðây là phản hồi từ Xmethods:

62 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 …> <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>

Các SOAP response ñược phân phối qua HTTP bắt buộc phải theo các mã trạng thái giống HTTP, ví dụ trạng thái 200 OK xác ñịnh là thành công, 500 là trạng thái lỗi trong máy chủ và phản hồi SOAP gồm có phần tử Fault.

Một phần của tài liệu giao thức quản lý mạng và công nghệ dịch vụ web thực hiện khai thác đường dây thuê bao (Trang 59 - 61)

Tải bản đầy đủ (PDF)

(101 trang)