PDA

View Full Version : نوشتن و کار با وب سرویس در PHP (حل شد)



iliamatin
دوشنبه 16 اردیبهشت 1392, 09:06 صبح
سلام خدمت همه دوستان و برنامه نویسان عزیز
من چند وقتیه که شروع کردم به نوشتن وب سرویس در php
سوالی که برام پیش اومده اینه که توی .NET بصورت اتوماتیک wsdl توسط ویژوال استادیو ارائه میشه
حالا برای تولید wsdl در پیاده سازی وب سرویس در php باید چیکار کنم؟؟؟

iliamatin
دوشنبه 16 اردیبهشت 1392, 10:49 صبح
کسی نیست جواب بده....
نمیدونم شاید سوالم مشکل داره یه جور دیگه بپرسم، من که دارم یه وب سرویس در php مینویسم باید wsdl داشته باشه، ایا wsdl را خودم باید بنویسم؟ که کاریست بس سخت و دشوار یا مثل .NET بصورت اتوماتیک خودش wsdl تولید میکنه؟ که اگه بصورت اتوماتیکه چجوری؟؟

iliamatin
یک شنبه 22 اردیبهشت 1392, 14:15 عصر
کسی نیست کمکی کنه؟
یعنی سوالش اینقدر سخته....

MMSHFE
یک شنبه 22 اردیبهشت 1392, 14:55 عصر
این نمونه رو ببینید، خودش براتون WSDL رو مینویسه.

iliamatin
دوشنبه 23 اردیبهشت 1392, 12:35 عصر
با تشکر فراوان از پاسختون
فایل شما را بارگذاری کردم ، در صفحه این را نشون میده
bool(false) bool(false)

ضمن اینکه الان شما برای تولید wsdl خودتون کدهاش را توی وب سرویس یعنی همون برنامه سمت سرور نوشتین؟؟ درسته؟؟

MMSHFE
دوشنبه 23 اردیبهشت 1392, 13:15 عصر
بله توی خود کد سمت سرور نوشته شده (چند خط آخر اسکریپت رو ببینید). ضمناً برای اجرای اسکریپت نباید اسم پوشه و مسیرش توی پوشه www تغییر کنه. در غیر اینصورت باید NameSpace توی وب سرویس اصلاح بشه.

iliamatin
دوشنبه 23 اردیبهشت 1392, 14:17 عصر
بازم ازتون ممنونم
منظورتون این کد هست:


$HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
$server->service($HTTP_RAW_POST_DATA);
exit();

یعنی همین تیکه کد باعث تولید wsdl میشه و من بعد از نوشتن کدهای سمت سرور آخر کدهام باید این تیکه کد را اضافه کنم؟؟
خیلی ببخشید یه سوال دیگه هم دارم و اون اینکه توی .net وقتی وب سرویس را run میکنی خودش بصورت اتوماتیک wsdl را تولید میکنه؟ آیا توی php همچین امکانی وجود نداره؟
خیلی ببخشید سوالام زیاد شد:خجالت:

MMSHFE
دوشنبه 23 اردیبهشت 1392, 17:21 عصر
بله. دقیقاً همین قطعه از کد باعث تولید WSDL میشه. توی PHP هم با گذاشتن همین خطوط در انتهای اسکریپت وب سرویس، قابلیت تولید خودکار WSDL رو بهش میدین. یعنی در بقیه اسکریپت، متدها و... رو تعریف میکنید و به وب سرویس اضافه میکنید و بقیه کارها رو به این سه خط محول میکنید.

iliamatin
سه شنبه 24 اردیبهشت 1392, 12:29 عصر
واقعا ازتون ممنونم تا حد زیادی ابهاماتم برطرف شد و حداقل تونستم خروجی wsdl بگیرم اما خب به جز اون چند خط پایانی، ما باید متدها و... برای wsdl را خودمون تعریف کنیم و خب این کمی سخته مخصوصا برای وب سرویسهای بزرگتر و گسترده تر اما توی برنامه هایی مثل .net این چیزا نیاز نیست و خیلی راحت خودش wsdl را تولید میکنه... توی php نرم افزاری وجود نداره که این کار را انجام بده؟؟

MMSHFE
سه شنبه 24 اردیبهشت 1392, 12:55 عصر
دوست گرامی، کلاً سیاست PHP اینه که بدونید کارها چطور انجام میشه نه اینکه مثل محصولات مایکروسافت، با چندتا کلیک کارها انجام بشه. این سیاست در جزئی ترین موارد مثل AJAX و... هم خودش رو نشون میده. مثلاً توی ASP.NET با قراردادن یک UpdatePanel و فعالسازی PartialRendering و PostBack خیلی راحت AJAX فعال میشه بدون اینکه متوجه بشین نقش XMLHTTPRequest این وسط چیه و Statusهای مختلفش یعنی چی و...
درمورد WSDL هم اوضاع همینطوره. درسته که یکم تولیدش زحمت بیشتری داره ولی درعوض دستتون برای هرجور مانوری بازه و محدود به چندتا امکانی که GUI در اختیارتون میگذاره نیستین. بهرحال تولید WSDL کار سختی نیست و با کمی وقت گذاشتن حتی میتونید خودتون اسکریپتی بنویسید که فهرست توابع رو بگیره و WSDL رو براتون تولید کنه. ولی مسئله اصلی اینه که وبسرویس یکبار نوشته میشه و بارها استفاده میشه. پس یکبار وقت گذاشتن و یک وبسرویس سریع و بهینه و کامل طراحی کردن، ارزشش رو داره که نخوایم با استفاده از ابزارهای آماده، خودمون رو محدود کنیم.

iliamatin
سه شنبه 24 اردیبهشت 1392, 13:44 عصر
ازتون بی نهایت ممنونم. مشکل و ابهاماتی که در این مبحث داشتم کامل حل شد. :لبخندساده:

iliamatin
چهارشنبه 25 اردیبهشت 1392, 09:59 صبح
آقای مهندس من فایلهای آموزش PHP شما را دیدم و استفاده کردم واقعا خیلی عالی بود. میخاستم ببینم قصد ندارین در ادامه اون سلسله آموزشها بحث آموزش وب سرویس در PHP را نیز داشته باشین؟؟

fa_karoon
پنج شنبه 19 دی 1392, 12:24 عصر
مهندس mmshfe اگر تابعی که نوشتیم پارامتر ورودی نداشت، ورودی های دستور register چه تغییری می کنه؟

abolfazl-z
پنج شنبه 19 دی 1392, 22:15 عصر
مهندس من در قسمت این انجمن آموزشی مبنی بر ایجاد وب سرویس پیدا نکردم ( wsdl,soap,...) کاش میشد یک تاپیک جداگانه میزدید و آموزش می دادید. (از مبتدی تا پیشرفته)

aliphp1
پنج شنبه 19 دی 1392, 22:36 عصر
منم میخوام اگه خدا قسمت کنه یه وب سرویس راه اندازی کنم ولی آموزش کاملی ندیدم اگه یه نفر که خیلی تسلط داره یه تاپیک جداگانه برای آموزش راه اندازی وب سرویس با php از مبتدی تا پیشرفته راه اندازی کنه دعاش می کنیم و مطمئن باشید اندازه یه سفر حج ثواب کرده
دوستان منتظریم ها . . .

MMSHFE
جمعه 20 دی 1392, 18:35 عصر
اینجا رو ببینید:
http://devzone.zend.com/25/php-soap-extension

abolfazl-z
شنبه 21 دی 1392, 21:46 عصر
اینجا رو ببینید:
http://devzone.zend.com/25/php-soap-extension

wsdl که یک توضیحی از وب سرویسسمون هست که هیچ (لزومی داره که یاد بگیریم چطوری میشه نوشتش یا نه ؟)

الان من این وسط یک چیز رو نفهمیدم !
فایل soap چیه این وسط کجا کاربرد داره ؟

<?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:Header>
...
</soap:Header>

<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>

</soap:Envelope>

من تونستم یک وب سرور بسازم ولی همچنین از کلاینت اون کلاسی که ست کرده بودم رو استفاده کردم ولی نفهمیدم این کد کجا هست !

nemo php
یک شنبه 22 دی 1392, 10:08 صبح
سلام .
با استفاده از soap داده ها رو به سرور ارسال کرد.

soap and wsdl

EN
http://www.phpeveryday.com/pack/Web-Services-WSDL-Step-By-Step-Tutorial

PE
http://www.developer1.ir/Web_Service/WSDL/intro.aspx

http://www.developer1.ir/Web_Service/SOAP/intro.aspx


یه مطلب دیگه WDDX از وب سرویس استفاده میکنه ولی داده ها رو تغییر میده وارسال میکنه .جالبه

abolfazl-z
یک شنبه 22 دی 1392, 11:20 صبح
با استفاده از soap داده ها رو به سرور ارسال کرد.

یعنی ما در واقع داده ها را در این فایل قرار میدهیم و به سمت سرور ارسال می کنیم و سرور هم این داده ها را میگیره و کار های لازم رو انجام میده (همان soapServer and soapClient) ؟

nemo php
یک شنبه 22 دی 1392, 13:29 عصر
دقیقا.البته نوع فرمت داده های ارسالی از soapclient به سرور با wsdl بررسی می شود.البته من زیاد بلد نیستم فقط در حد آماتورم.

saman.1001
جمعه 06 تیر 1393, 16:55 عصر
سلام من فایل رو داخل لوکال اجرا کردم ولی همین دو تا رو چاپ میکنه bool(false) bool(false) مگه نباید به تابع GetUserInfo وصل بشه و اطلاعات یوزر چاپ بشه؟ لطفا راهنمائی نمایید.

mehdi mah
جمعه 06 تیر 1393, 19:25 عصر
مهندس mmshfe اگر تابعی که نوشتیم پارامتر ورودی نداشت، ورودی های دستور register چه تغییری می کنه؟
نمیدونم مشکلت حل شده یا نه تو قسمت register بخش دوم رو(input) به صورت array() مینویسی فقط همین

armsoftpc
دوشنبه 30 تیر 1393, 19:35 عصر
سلام

ولی مسئله اصلی اینه که وبسرویس یکبار نوشته میشه و بارها استفاده میشه. پس یکبار وقت گذاشتن و یک وبسرویس سریع و بهینه و کامل طراحی کردن، ارزشش رو داره که نخوایم با استفاده از ابزارهای آماده، خودمون رو محدود کنیم.
آیا امکان داره کد Wsdl رو یه بار بسازیم و با فرمت .wsdl ذخیره کنیم، بعد دیگه هی این فایل php رو لود نکنیم؟ چون nusoap.php که ضمیمه اش کردیم برای ساخت کد 300kb حجم داره و باعث کاهش سرعت سایت میشه. اگر نه!
پس امکان داره اصلا از SoapServer خود php استفاده کنیم.
من طرف کلاینت رو تونستم به SoapClient خود php تبدیلش کنم ولی طرف سرور رو نمی تونم!:عصبانی++:
راه حل چیست؟:متفکر:

armsoftpc
سه شنبه 31 تیر 1393, 18:54 عصر
منتظریم....:اشتباه::لبخند:

armsoftpc
پنج شنبه 02 مرداد 1393, 01:33 صبح
چرا هیچکی پاسخ نمیده...!!!

armsoftpc
پنج شنبه 02 مرداد 1393, 16:31 عصر
مردیم........
یعنی واقعا هیچکس توی این تالار جوابی برای این سوال نداره؟!!!:ناراحت:

armsoftpc
دوشنبه 06 مرداد 1393, 20:02 عصر
من که به شخصه پیر شدم،:عصبانی++::لبخند: سال های قبل باز لااقل توی بدترین حالت یه جواب پرت می دادند، دیگه الان اصلا دوستان جواب نمی دند!!!:ناراحت: خدا رو شکر.:چشمک:

MMSHFE
دوشنبه 06 مرداد 1393, 21:11 عصر
ساخت وب سرویس با خود SOAP :
http://devzone.zend.com/25/php-soap-extension