PDA

View Full Version : حرفه ای: کار نکردن وب سرویس با NuSoap



mehdisat2000
جمعه 22 دی 1391, 14:48 عصر
سلام.
من یک وب سرویس SMS دارم و SOAP هم روی سرورهام فعال نیست. به همین دلیل تلاش کردم که از Nusoap استفاده کنم اما با استفاده از NuSoap هیچ SMSی ارسال نمی شود.
نمونه NuSoap:

<?php
require('nusoap.php');
$client = new soapclient('http://parsipayamak.com/API/Send.asmx?wsdl');
$result = $client->call('SendSms', array('username' => 'username','password' => 'password', 'from' => '3000...','to' => array('91......'),'text' => 'TEST','flash' => false));
print_r ($result);
?>


پاسخ دریافتی:

Array ( [SendSmsResult] => 0 [status] => [recId] => )

نمونه SOAP (لوکال هاست) (SMS ارسال می شود):

<?php
// turn off the WSDL cache
ini_set("soap.wsdl_cache_enabled", "0");
require_once('lib/nusoap.php');


$client = new SoapClient("http://parsipayamak.com/API/Send.asmx?wsdl");
$parameters['username'] = "username";
$parameters['password'] = "username";
$parameters['from'] = "3000...";
$parameters['to'] = array("91...");
$parameters['text'] ="TEST";
$parameters['flash'] = false;
$result = $client->SendSms($parameters);
print_r($result);
?>

پاسخ دریافتی:

stdClass Object ( [SendSmsResult] => 0 [status] => [recId] => stdClass Object ( [long] => 5.5250607708492E+18 ) )

ممکن است مربوط به stdClass Object باشد؟ چون در Nusoap به جای stdClass Object از Array استفاده می کند!

plague
جمعه 22 دی 1391, 18:34 عصر
شما باید داکیومنت وبسرویس رو مطالعه کنید و ببینید که وقتی ریزولت رو 0 برمیگردونه دلیلش چیه

مثلا شاید یوزر و پسورد رو اشتباه وارد کرده باشی , [ب شما یکسال هم این کدت رو نگاه کنی نمیتونی بفمی شکل از چیه !
هر وبسرویسی یه داکیومنت داره که میگه که فلان شماره برگشتی یعنی فلان مشکل رو داره

---
اول بگم که من خیلی با وبسرویس ها کار نرکدم ولی یه مورد دیگه اینکه شما NUSOAP ضمیمه کردی تو صفحه اونوقت چرا شی که میسازی SOAP هستش ؟
نباید بجای
new SoapClient
بنویسی
new nusoap_client

؟

mehdisat2000
جمعه 22 دی 1391, 23:35 عصر
شما باید داکیومنت وبسرویس رو مطالعه کنید و ببینید که وقتی ریزولت رو 0 برمیگردونه دلیلش چیه

مثلا شاید یوزر و پسورد رو اشتباه وارد کرده باشی , [ب شما یکسال هم این کدت رو نگاه کنی نمیتونی بفمی شکل از چیه !
هر وبسرویسی یه داکیومنت داره که میگه که فلان شماره برگشتی یعنی فلان مشکل رو داره

---
اول بگم که من خیلی با وبسرویس ها کار نرکدم ولی یه مورد دیگه اینکه شما NUSOAP ضمیمه کردی تو صفحه اونوقت چرا شی که میسازی SOAP هستش ؟
نباید بجای
new SoapClient
بنویسی
new nusoap_client

؟
من با همین یوزر نیم و پسورد از طریق SOAP روی سرورهایی که SOAP آن ها فعال است، میتوانم SMS بفرستم.
عدد 0 به معنای ارسال موفقیت آمیز SMS است.
در کدهای Nusoap قبلاً از nusoap_client نیز استفاده کرده ام و هیچ فرقی با مورد قبلی نداشته است!

<?php
require('nusoap.php');
$client = new nusoap_client('http://parsipayamak.com/API/Send.asmx?wsdl', 'wsdl');
$result = $client->call('SendSms', array('username' => 'username','password' => 'password', 'from' => '3000...','to' => array('91......'),'text' => 'TEST','flash' => false));
print_r ($result);
?>

MostafaEs3
شنبه 23 دی 1391, 01:54 صبح
ورژن Nusoap رو آپدیت کن یا یک ورژن پایینتر رو نصب کن ! موردی خودم باهاش برخورد کردم که بخاطر ورژن Nusoap بود - اگه بازهم حل نشد دوتا حالت وجود داره یا اینکه کانفیگ Soap با کانفیگ Nusoap متفاوت هست و یا اینکه مشکل از کانفیگ سرور هست
مثلا توی کانفیگ Nusoap میشه انتخاب کرد که مقادیر رو از Curl ارسال کنه و پارامتر های بسیار زیادی داره درکل

کار دیگه ای که شما باید انجام بدی ست کردن Utf-8 برای Nusoap هست :


$nusoapClient->xml_encoding = "UTF-8";
$nusoapClient->soap_defencoding = "UTF-8";
$nusoapClient->decode_utf8 = false;

بررسی کن ببین مشکل حل میشه یا نه :چشمک:

aliphp1
دوشنبه 08 دی 1393, 00:12 صبح
سلام دوستان ببخشید چه فرقی بین فراخوانی این شکلی :

$result = $client->call('SendSms', array('username' => 'username','password' => 'password', 'from' => '3000...','to' => array('91......'),'text' => 'TEST','flash' => false));
با فراخوانی این شکلی هست :

$result = $client->SendSms($parameters);


منظورم استفاده از همون call هست
من یک وبسرویس نوشتم الان باروش اول فراخوانی میشه ولی با دومی خطا میده

aliphp1
دوشنبه 08 دی 1393, 09:45 صبح
دوستان راهنمایی نمی کنید ؟
نمی دونم چرا این روزا هیچ کس جواب سوال آدم رو نمیده