PDA

View Full Version : خطای DTD are not supported by SOAP



AfshinHonari
پنج شنبه 03 تیر 1395, 13:02 عصر
سلام
دوستان من موقع اجرای یک وب سرویس ساده این خطا رو دریافت میکنم
Fatal error: Uncaught SoapFault exception: [Client] DTD are not supported by SOAP in C:\Xampp\htdocs\exer\index.php:7 Stack trace: #0 C:\Xampp\htdocs\exer\index.php(7): SoapClient->__call('add', Array) #1 {main} thrown in C:\Xampp\htdocs\exer\index.php on line 7
مشکل کار از کجاست؟

<?php// client.php
$options = array(
'uri' => 'http://localhost/exer',
'location' => 'http://localhost/location',
);
$client = new SOAPClient(null, $options);
echo $client->add(10, 10);

و کد سرور هم

<?php// server.php
class MyService
{
public function add($x, $y)
{
return $x + $y;
}
}

$options = array(
'uri' => 'http://localhost/exer',
'location' => 'http://localhost/location',
);

$server = new SOAPServer(null, $options);
$server->setObject(new MyService());
$server->handle();

ebibombas1988
پنج شنبه 03 تیر 1395, 14:59 عصر
تو کدای سرور به جای
$server->setObject(new MyService());

از
$server->setClass('MyService');
استفاده کن

AfshinHonari
پنج شنبه 03 تیر 1395, 16:41 عصر
ممنون بابت پاسخ ولی حل نشد

AfshinHonari
پنج شنبه 03 تیر 1395, 17:14 عصر
مشکلم حل شد مشکلم سر لوکیشن بود
حالا یک سوال دیگه اینکه
location آدرس سرویس دهنده رو توی options به کلاینت میده
اما uri چیکار میکنه ؟چون من هرچی که میذارم وب سرویس کار میکنه اما وقتی کامل برش میدارم میگه وقتی ک از wsdl استفاده نمیکنی باید uri توی options باشه

ebibombas1988
جمعه 04 تیر 1395, 00:37 صبح
تو soapserver پارامتر اول مسیر wsdl مشخص میکنه وقتی null میزاری uri حتما باید تعریف شه که کارش مشخص کردن آدرس وب سرویس ولی تو soapserver به location احتیاجی نداری
تو soapclient که به location و uri به طور همزمان احتیاج داری

AfshinHonari
جمعه 04 تیر 1395, 00:40 صبح
تشکر
منظور از آدرس وب سرویس چیه؟
چون من uri رو به هر مقداری ک تغییر میدم بازم وب سرویس بدون خطا اجرا میشه