رفع خطای soap client

گاهی اوقات وقتی شما از کلاس soapclient برای اتصال به وب سرویس بانک پارسیان استفاده می کنید، خطای زیر را دریافت می کنید:
 

Warning: SoapClient::SoapClient() expects parameter 2 to be array, string given in /home/username/public_html/filename.php on line 123 Fatal error: Uncaught SoapFault exception: [Client] SoapClient::SoapClient() [/phpmanual/soapclient.soapclient.html]: Invalid parameters in /home/username/public_html/filename.php:123 Stack trace: #0 /home/username/public_html/filename.php(123): SoapClient->SoapClient('https://www.pec...', 'wsdl') #1 /home/username/public_html/payment.php(105): SEND_DATA_TO_PEC24() #2 {main} thrown in /home/username/public_html/filename.php on line 123

علت وقوع خطای بالا این است که Soap بر روی سرور شما نصب شده و با نسخه ی که بانک پارسیان از آن استفاده می کند سازگاری ندارد.

 و یا ممکن است خطای زیر رخ دهد :

Fatal error: Cannot redeclare class soapclient in /home/username/public_html/includes/nusoap/nusoap.php on line 7240

 

 این خطا علاوه بر دلیل بالا، به علت دوباره تعریف کردن کلاس soapclient در فایل nusoap.php هست. چون همانطور که گفتیم soap قبلا روی سرور نصب شده و کلاس soapclient هم در آن تعرف شده است.

 

برای رفع این مشکل:

آخرین نسخه ی soap را از سایت http://sourceforge.net/projects/nusoap/files دانلود کنید.

آخرین نسخه در زمان نگارش این مطلب nusoap-0.9.5.zip است.(برای دانلود از سایت طلاهاست، روی لینک کلیک کنید)

فایل lib/nusoap.php را در اسکریپت خود فراخوانی کنید (include)

بجای کلاس soapclient از nusoap_client استفاده کنید.

مثلا بجای

$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');

از

$soapclient = new nusoap_client('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');

استفاده کنید.




تاریخ ایجاد : 1389/06/28 @ 10:36