سلامی به بزرگی رویاهای شما
در ادامه قسمت قبل سعی داریم که یک ارتباط خیلی ساده را با یک سرویس دهنده وب ( وب سرویس) برقرار کنیم.
در این ارتباط یک داده که در مثلا درجه حرارت بر مبنای فارنهایت می باشد را برای وب سرویس می فرستیم و تبدیل شده آن به سانتی گراد را دریافت می کنیم.
برای شروع کار باید افزونه wsclient را دانلود کرده باشید و افزونه های Web service client,Web service client SOAP,Web service client UI را فعال نمایید.
این افزونه جهت کار کردن نیاز به افزونه rules هم دارد که در مقالات قبلی ( مقاله ۱ - مقاله ۲ ) درباره آن توضیحاتی را خدمت شما داده ام.
مراحل کار به این شرح است:
- ایجاد یک نوع محتوا که مقدار درجه حرارت به سانتی گراد را دریافت می کند.
- ایجاد ارتباط با وب سرویس
- ارسال درجه حرارت به وب سرویس
- دریافت نتیجه و نمایش آن به کاربر
۱- ایجاد یک نوع محتوا
ایجاد کردن یک نوع محتوا که کاری ساده است که در این فیلم آموزشی توضیح داده ام.
این نوع محتوا تنها یک فیلد به نام درجه حرارت دارد که از نوع اعشاری یا float می باشد.
پس از ایجاد نوع محتوا یک محتوا از این نوع ایجاد کنید و یک مقدار جهت تبدیل وارد کنید. مثلا فرض کنید می خواهیم بدانیم ۴۵ درجه فارنهایت چند درجه سلسیوس است. پس یک محتوا ایجاد می کنیم و در فیلد مربوطه مقدار ۴۵ را وارد می کنیم:
۲- ایجاد ارتباط با وب سرویس
به صفحه پیکربندی (configuration) مراجعه نموده و از قسمت وب سرویس ها گزینه Web service descriptions را انتخاب نمایید.
در صفحه ظاهر شده لینک Add web service description را کلیک کنید.
در صفحه بعدی در قسمت URL لینک زیر را وارد کنید و پس از وارد کردن Label و انتخاب گزینه SOAP از قسمت Type دکمه ذخیره را فشار دهید:
https://www.w3schools.com/webservices/tempconvert.asmx?WSDL
این آدرس یک وب سرویس استاندارد جهت آموزش و تست هست که در سایت w3schools قرار داره. اگر این سایت را نمی شناسید بهتره حتما یک سری بهش بزنید که آموزش های خیلی خوبی درباره برنامه نویسی وب داره. از نظر امنیتی هم خیالتون راحت باشه ما کار خاصی نمی کنیم فقط داریم برایش یک پیغام می دیم و ازش نتیجه را می خواهیم. خوبی وب سرویس این هست که امنیت خوبی را برای استفاده کننده ها فراهم می کنه.
در قسمت پایین صفحه ظاهر شده می بینید که یک سری عملیات (operations) داریم و یک سری data types که در افزونه rules از آن ها استفاده خواهیم نمود.
۳- ارسال درجه حرارت برای وب سرویس
در مرحله بعدی به سراغ صفحه پیکربندی و سپس از بخش جریان کار (workflow) روی گزینه Rules کلیک کنید.
در صفحه ظاهر شده روی لینک Add new rule را بفشارید !
قسمت های خالی را پر کنید:
- نام : Celsius to Fahrenheit
- React on event : After saving new content
- Restrict type by : Celsius to Fahrenheit
و ذخیره کنید. با حرکت ما صاحب یک rule شده ایم که هر بار بعد از ذخیره یک محتوا از نوع Celsius to Fahrenheit فراخوانی خواهد شد.
در داخل صفحه rules و از بخش ELEMENTS روی گزینه Add action کلیک کنید. در این جا می خواهیم هنگامی که این rule فراخوانی شد یک عملیات (action) انجام شود.
در بخش اول create a data structure را انتخاب کرده و در صفحه بعدی این گزینه را انتخاب کنید :Temperature Converter: CelsiusToFahrenheit
این گزینه همان وب سرویسی است که در مرحله دوم ایجاد کرده بودیم و حالا می خواهیم اطلاعاتی که نیاز دارد را برایش ارسال کنیم.
در برخی از موارد وب سرویس ها به جای دریافت تنها یک اطلاعات خاص مجموعه ای از اطلاعات را از ما می خواهند. مثل همان وب سرویس پارس پال که در مقاله قبلی گفتیم اطلاعات مشتری نظیر آدرس ایمیل و مبلغ و تلفن همراه و ... را از ما می خواهد.
برای این که بتوانیم تمامی این اطلاعات را یکجا ارسال کنیم نیاز هست که یک ساختار داده ایجاد کنیم. این ساختار مانند یک جعبه است که قرار است وسیله های خودمان (اطلاعات) را داخل آن قرار دهیم و به جای ارسال تک تک این وسیله ها تمامی آن ها را یکجا به عنوان یک جعبه بفرستیم.
خود شاهد این هستید که در صفحه بعدی از ما می خواهید تنها مقدار داده مورد نیاز که همان درجه حرارت است را وارد کنیم:
در این جا روی لینک switch to data selection کلیک بفرمایید و از پنجره باز شده فیلدی که داخل فرم نوع محتوای ایجاد شده در مرحله اول ساخته بودیم را انتخاب کنید:
این فیلد خودش کامل می شود و کافی است که شما مسیر را دنبال کنید. مثلا ابتدا داخل آن کلیک کنید و سپس روی گزینه node ... created content و سپس روی node:field-ctf-temp کلیک کنید.
با این کار شما می گویید که اطلاعاتی که می خواهید ارسال شود همان اطلاعاتی است که در هنگام ایجاد یک فرم در بخش اول وارد کرده بودید یعنی عدد 45 !
حال دکمه ذخیره را بفشارید .
افزودن دیدگاه جدید