پروتکل SOAP در php(نحوه ارسال و درخواست در این پروتکل)
۷ سال پیش(به روز شده در ۶ سال پیش) پی اچ پی(PHP)(کلاس) ۴
"با استفاده از پروتکل دسترسی آسان به اشیاء یا سُوپ (Simple Object Access Protocol - SOAP) میتوان به ارسال و تبادل پیامهایی از جنس اکسامال بر روی شبکههای رایانهای مبادرت کرد". اطلاعات بیشتر در ویکیپدیا
ما قصد توضیح در مورد پروتکل SOAP را نداشته بلکه هدف این است تا با نحوه استفاده از کلاس معروف nusoap.php که در حیطه این پروتکل نوشته شده را مثال بزنیم. در مثال زیر در سریعترین حالت ممکن به نحوه استفاده از این پروتکل پر کاربرد پی خواهید برد.
سمت سرور
در سمت سرور نیاز است تا دستورات لازم جهت پاسخگویی به کلاینت ها یا مشتریها را مشخص کنیم یعنی مثلا تابعی بنویسیم که با توجه به درخواست کاربر از سمت مشتری یا کلاینت , پاسخ مورد نظر را ارسال نماید. در مثال ما کاربر نام و نام خانوادگی را ارسال کرده و سرور پیغام خوش آمدگویی ارسال می کند.
require_once "nusoap.php"; function welcome($name, $family) { return "$name $family"; } $server = new soap_server(); $server->register("getProd"); $server->register("welcome"); $server->service($HTTP_RAW_POST_DATA);
در کد بالا ابتدا کلاس را فراخوانی نموده ایم. سپس تابع welcome نام و نام خانوادگی را گرفته و در نهایت پیغام خوش آمدگویی را باز می گرداند. روالهای آخر کد مربوط به ایجاد کلاس , معرفی تابع به پروتکل و نحوه ارسال اطلاعات می باشند.
کلاینت یا مشتری
در سمت مشتری نیاز است تا کلاس فراخوانی گردد. سپس با توجه به خدماتی که سرور انجام می دهد درخواست خود را ارسال می نماییم. در اینجا خدمات سرور فقط خوش آمدگویی است! به کد زیر دقت کنید:
require_once "nusoap.php"; $client = new nusoap_client('http://127.0.0.1/SOAP/server.php'); if ($client->fault) { echo '<h2>Fault</h2>'; print_r($result); } else { $result = $client->call('welcome', array('Mehrdad', 'Shoja')); $error = $client->getError(); if ($error) { echo '<h2>Error</h2>' . $error; } else { echo "<h2>$result</h2>"; } }
ابتدا کلاس فراخوانی شده سپس چک می شود که در اتصال به سرور خطایی رخ داده یا خیر(fault). اگر خطایی رخ داده پیغام مورد نظر نمایش داده می شود و در غیر اینصورت نوع درخواست(تابعی که در سمت سرور معرفی نموده ایم) و مقادیر ورودی که نام و نام خانوادگی است ارسال می کنیم که در صورت نبود خطا از سمت سرور(getError) نتیجه مورد دلخواه به نمایش در می آید.
* تمامی کدهای بالا به همراه کلاس nusoap.php را می توانید در بخش آخر مطلب دانلود نمایید.
4 نظر
با سلام و عرض ادب
من واقعاً حوصله نظر دادن تو هیچ سایتی رو ندارم ، ولی به خاطر زحمت بی منتی که شما کشیدید و این مطالب مفید رو برای عموم جویندگان دانش قرار دادید ، منم خودم رو مجاب کردم که به وسیله این نظر تشکر و قدردانی صمیمانه خودم رو ابراز کنم .
موفق و پیروز باشید
سلام. نظر لطف شماست.
پیروز باشید.
ممنون از پستتون ولی موقع اجرا ارور Response not of type text/xml: text/html; charset=UTF-8 رو میده
خواهش میکنم. نمونه کد شما به چه صورت هست؟