PDA

View Full Version : سوال: چگونه از soap استفاده کنم؟



محمد مهدی حبیبی
چهارشنبه 21 مهر 1389, 16:40 عصر
سلام
من یه سری فایل برای ارسال اس ام اس دارم ولی نمی دونم چه طوری باید از اونا با زبان پی اچ پی استفاده کنم
POST /webservice/sms.asmx HTTP/1.1 Host: www.sms1000.ir Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/doSendSMS" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <doSendSMS xmlns="http://tempuri.org/"> <uUsername>string</uUsername> <uPassword>string</uPassword> <uNumber>string</uNumber> <uCellphones>string</uCellphones> <uMessage>string</uMessage> <uFarsi>boolean</uFarsi> </doSendSMS> </soap:Body> </soap:Envelope>

این یه تکه از soap هست که باید استفاده کنم.
اگه میشه کمکم کنید.
سپاس

hamid_rezas
پنج شنبه 22 مهر 1389, 19:06 عصر
برای این منظور باید از دستورات soap در php استفاده نمایید.
به راهنمای soap در مراجع php مراجعه نمایید.
البته اگر میگید یکسری فایل بهتون دادن اونا احتمالاً API لازم رو در اختیارتون قرار دادن.
شما باید از این فایلها یا بقولی کتابخانه ها استفاده نمایید.

از soap برای اتصال و استفاده از وب سرویس استفاده میشود.
تابع داره باید از اون استفاده کنید و پارامترهای لازم را ارسال کنید.

اگر دوست داشتید فایلها را برایم ارسال کنید شاید توانستم راهنمایی بیشتری کنم.

در ضمن این بحث بهتر بود در مباحث PHP مطرح میشد.

Saeed_m_Farid
شنبه 24 مهر 1389, 10:44 صبح
...
این یه تکه از soap هست که باید استفاده کنم...
سلام، یک تکه بدرد نمیخوره! شما این فایل که دارای پسوند WSDL هست رو باید استفاده کنید؛ فایلهای WSDL فایلهایی هستند که توابع وب سرویس که ارائه داده میشه تو خودشون دارند، شما از تابع SoapClient باید استفاده کنید، مثلاً برای وب سرویس آمازون (و تابع جستجوی کتاب) کد زیر استفاده میشه که بجای Uri ذکر شده در این کد شما باید فایل wsdl خودتون رو قرار بدین :
$params->AWSAccessKeyId = AMAZON_API_KEY;
$params->Request->SearchIndex = 'Books';
$params->Request->Keywords = 'php5 oop';

$amazon = new SoapClient('http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl');
$result = $amazon->itemSearch($params);

من برنامه نویس php نیستم و بیشتر نمیتونم راهنمایی کنم ولی روال کلی به این صورت هست که سرویس دهنده یک فایل wsdl از وب متدهاش ارائه میده و شما بعنوان سرویس گیرنده (کلاینت) با ترکیب URL سایت اونها (یا IP) و مسیر اون wsdl می تونید به وب متدهای اونها دسترسی پیدا کنید: + (http://www.phpbuilder.com/columns/adam_delves20060606.php3) و + (http://php.net/manual/en/book.soap.php) و + (http://www.ferdychristant.com/blog/articles/DOMM-6J2QFF) و + (http://www.devworld.apple.com/internet/webservices/soapphp.html) : ... (http://www.google.com/#sclient=psy&hl=en&q=php+web+service+call&aq=f&aqi=g-s4g-o1&aql=&oq=&gs_rfai=&pbx=1&fp=80834014c217cffa)

محمد مهدی حبیبی
یک شنبه 25 مهر 1389, 09:33 صبح
سپاس از دوستان
آقای حمید رضای عزیز کل فایلی که در اختیار من گذاشتن در این آدرس هست:
http://www.sms1000.ir/webservice/sms.asmx
و قبلا توی پرداخت های شتاب از این نوع کارها کردم ولی این بار این شرکت آدرس wsdl رو در اختیار من قرار نداده و اسم توابعش رو هم نگفته و فقط و فقط همین آدرس رو به من دادن.

Saeed_m_Farid
یک شنبه 25 مهر 1389, 15:33 عصر
چرا اسم توابعش رو نگفته؟ تو همون لینک مگه نمی بینید توابع رو؟

HelloWorld
doReceiveSMS
doReceiveSMSAll
doSendSMS
getDelivery
getInfo

روی Service Description هم کلیک کنید، مسیر wsdl رو بهتون میده (می تونید آخر url ای که بهتون دادن، wsdl? بذارید که مسیر WSDL اش بدست بیاد):
http://www.sms1000.ir/webservice/sms.asmx?wsdl
در ضمن همونطور که می بینید، متاسفانه وب سرویس کاملاً ناشیانه نوشته شد و بهتره شما اینقدر راحت این URL رو همه جا، جار نزنید چون دو سوته میشه خوابوندش و کسی که ضرر میکنه خود شما هستید!

Saeed_m_Farid
یک شنبه 25 مهر 1389, 15:52 عصر
من تو C#‎‎ امتحان کردم، Hello World اش کار میکنه و بقیه هم که uUsername و uPassword میخواد که بدون هیچ authentication ای میشه توابع رو فراخوانی کرد و خوب این خطرناک هست!
نمونه کد بنده :
private void button1_Click(object sender, EventArgs e)
{
SMS_REF_NS.smsSoapClient sms1 = new SMS_REF_NS.smsSoapClient();
MessageBox.Show(sms1.HelloWorld());
sms1.doSendSMS("MY_USER", "MYPASS", "123456789", "09121111111", "Test Message", false);
}

اون SMS_REF_NS هم یک Service Reference هست که به پروژه اضافه کردم و smsSoapClient هم که شامل توابع و کلاسهای این وب سرویس هست؛ ضمناً این وب سرویس هم با دات نت نوشته شده ...

موفق باشید.