- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Dịch vụ soap là dịch vụ web service, xây dựng cho website để cho phép ứng dụng thứ 3 tương tác vào dữ liệu của website. Khác với dịch vụ web service json api, Soap trả về dữ liệu xml WSDL và json api thì trả về kiểu dữ liệu json.
Soap được thiết kế với ý tưởng gọi hàm, soap có 2 phần:
- Soap server: chính là nội dung webservice, phần này xây dựng ở phía web wordpress. Soap server có sau khi được tạo sẽ cung cấp địa chỉ cho soap client truy cập và sử dụng. Nhận dạng Địa chỉ Soap có thêm tham số
?wsdl
- Soap client: mọi nền tảng có hỗ trợ soap đây còn gọi là thiết bị đầu cuối, là phần sử dụng soap. Hầu hết các ngôn ngữ lập trình hiện nay đều hỗ trợ soap như php, asp, java,j2me,c#,python,…
– Hiểu đơn giản: Soap server là nơi cung cấp sản phẩm còn Soap client là nơi sử dụng sản phẩm.
Giải thích: Soap server chứa các hàm được xây dựng và thực thị bởi một ngôn ngữ (vd: php), một thư viện soap được chèn vào bộ code website “cung cấp dịch vụ soap” và trở thành soap server. ứng dụng thứ 3 hay soap client không thể truy cập trực tiếp mã code này, thay vào đó nó được mã hóa sang dạng WSDL là dữ liệu XML chứa thông tin các hàm có trong dịch vụ soap. Khi đó địa chỉ soap server có dạng:
http://example.com/?wsdl
Một số thư viện soap để bạn tham khảo: nusoap
< ?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body xmlns:m="http://www.example.org/stock"> <m:getstockprice> <m:stockname>IBM</m:stockname> </m:getstockprice> </soap:body> </soap:envelope>
Quay trở lại bài viết, wordpress có hỗ trợ một vài plugin để tạo soap, hiện tại mình biết được plugin này các bạn tải plugin này tại đây nhé: Download WordPress Soap service
Sau khi tải về, kích hoạt plugin. Trong bài viết này địa chỉ web mình lấy là http://localhost/wordpress
, thì địa chỉ của soap sẽ là:
http://localhost/wordpress?/wpws/?wsdl
Truy cập địa chỉ này trên trình duyệt sẽ thấy kết quả trả về file xml, file này gọi là wsdl. Thông tin tất cả các hàm sẽ sử dụng thể hiện ở URL này.
Xem thông tin của plugin, bạn truy cập vào địa chỉ: http://localhost/wordpress?/wpws
Kết quả:
Sử dụng Soap
Mình chạy thử soap với php, trong PHP có hỗ trợ thư viện Soap client. Sử dụng notepad++ tạo mới file wp-soap-client.php, và chép vào đoạn code dưới đây:
< ?php $url='http://localhost/wordpress/index.php?/wpws/?wsdl'; $client = new SoapClient($url, array("trace" => 1, "exception" => 0)); $result = $client->__soapCall("getPosts",array('id'=>'1')); print_r($result); ?>
Đoạn code trên kết nối vào dịch vụ soap có địa chỉ http://localhost/wordpress/index.php?/wpws/?wsdl
sử dụng class SoapClient
. Trong đối tượng lớp SoapClient có phương thức __soapCall
dùng để gọi hàm. Tham số mảng array('id'=>'1')
chứa các tham số có sử dụng vào hàm được gọi.
Hàm getPosts
trong wordpress trả về nội dung của post, trong ví dụ trên chúng ta có kết quả của getPosts(1)
:
stdClass Object ( [item] => stdClass Object ( [id] => 1 [author] => 1 [date] => 2014-07-15 03:03:08 [dateGmt] => 2014-07-15 03:03:08 [content] => Welcome to wp2 Sites. This is your first post. Edit or delete it, then start blogging! [title] => Hello world! [excerpt] => [status] => publish [commentStatus] => open [pingStatus] => open [password] => [name] => hello-world [toPing] => [pinged] => [modified] => 2014-07-17 10:48:19 [modifiedGmt] => 2014-07-17 10:48:19 [contentFiltered] => [parentId] => 0 [guid] => http://localhost/wp2/thevistaanphu/?p=1 [menuOrder] => 0 [type] => post [mimeType] => [commentCount] => 1 [filter] => raw ) )
FAQ
Nếu không truy cập được địa chỉ soap wsdl, bạn kiểm tra file wpws.wsdl có tồn tại trong folder plugin wordpress-web-service không. Nếu không tồn tại thì copy wpws.template.wsdl thành wpws.wsdl rồi edit file với notepad++:
Tìm chuỗi: wsdlsoap:address
thay %{BLOG_PATH} bằng địa chỉ web của bạn (ví dụ: http://yoursite.com/blog), sau đó save lại.
Chúc bạn thành công.
Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype