10 اردیبهشت 1400
وبسرویس یک ابزار بسیار کاربردی برای پروژه شماست. بگذارید مثالی بزنم: فرض کنیم یک برنامه ساده «جدول ضرب» در سایت خود ساختهایم. دادههای ورودی ما شامل دو «عدد» و خروجی «حاصلضرب» آنهاست. حال چه میشود اگر سایر کاربران یا سایر برنامهها نیز بتوانند - بدون ورود به سایت یا پروژه شما - از برنامه جدولضرب استفاده کنند؟
وبسرویس همانند یک «واسط»، دادهها را دریافت میکند و توسط برنامهای که برایش تدارک دیدهایم پردازش کرده و نتیجه را بر میگرداند. اما حسن آن نسبت به سایر روشها چیست؟
به کمک وبسرویس میتوانید امکاناتی از پروژه خود را بدون نگرانی در اختیار سایرین قرار دهید.
شما برنامهای ساختهاید و میتوانید از دیوایسها و زبانهای مختلف، داده برای آن ارسال کرده و نتیجه را دریافت کنید. این ویژگی در برنامههای بزرگ خود را بیشتر نشان داده و باعث صرفهجویی در کدنویسی میشود.
همچنین با توجه به نقش واسطه بودن آن، دیتابیس شما در معرض ارتباط مستقیم قرار نمیگیرد
<?php include("nusoap.php"); function multiply($x,$y) { return $x * $y; } $server = new soap_server(); $server->register("multiply"); @$server->service(file_get_contents("php://input")); ?>
ابتدا فایل nusoap.php را دانلود کرده و در پروژه خود قرار میدهیم. میتوانید این فایل را از قسمت دانلود مقاله دریافت نمایید. تابعی با نام دلخواه برای برنامه مینویسیم که در اینجا multiply تابع ماست و قرار است دو متغیر x و y را دریافت کرده و حاصلضرب آن دو را برگرداند. دقت کنید اگر وبسرویس شما دارای چندین تابع است، به ازای هر تابع باید خط register برای آن در نظر گرفته شود.
<html> <head> <meta charset="utf-8" /> <title>NuSOAP</title> </head> <body> <?php require_once "nusoap.php"; $url = 'http://YOUR-DOMAIN/server.php'; $client = new nusoap_client($url); $x = 3; $y = 4; if ($client->fault) echo "ارتباط برقرار نشد"; else { $result = $client->call('multiply', array($x,$y)); $error = $client->getError(); if ($error) echo "خطا! ".$error; else echo "پاسخ وب سرویس: ". $result; } ?> </body> </html>
در سمت کلاینت نیز بایستی فایل nusoap.php فراخوانی شود. سپس مسیر کامل فایل server.php توسط nusoap_client صدا زده شده و مقادیر x و y تحت تابع multiply (تابع دلخواهی که در بالا ساختیم) برای سرور ارسال و نتیجه مطابق دستورات فوق بازگردانیده شود.