SOAP ext з чого почати, PHPClub - клуб розробників PHP
SOAP ext з чого почати?
Встромляю в SOAP розширення PHP. Підкажіть із чого почати? Для початку намагаюся просто змусити хоч щось заробити взяв приклад з http://phpclub.ru/detail/article/soap Але у мене він вивалюється з помилкою: "SoapFault exception: Function ("getQuote") не є правильним методом для цієї служби в H:\WebServers\sites\test\index.php:13" Підкажіть, хто працював з цим звіром.
Дякую, звичайно за пораду!)) З цього взагалі-то і починав. Сюди запостився, щоб ті хто знає питання, якийсь простий працюючий приклад дали. І підказали, що не так, якщо реалізувати не вийде.
ЗИ: мож, не так треба було тему назвати.
FractalizeR
PHPПенсіонер
Цей приклад робив на локалі.
Сервер soap.php: 98.42);
function getQuote($symbol) < if (isset($this->quotes[$symbol])) < return $this->quotes[$symbol]; > else < throw new SoapFault("Server","Unknown Symbol '$symbol'."); > > >
ini_set("soap.wsdl_cache_enabled", "0"); // відключаємо кешування WSDL $server = new SoapServer("soap.wsdl"); $server->setClass("QuoteService"); $server->handle(); ?>
2Alexandre: Так, приклад хороший, я його ж і взяв, тільки з http://phpclub.ru/detail/article/soap!))
До речі, щойно запустив, помилка інша: "SoapFault exception: [Client] не XML document в H:\WebServers\sites\test\index.php:13"
Продався Java
2Krishna: природно! Ну форум потрібен не тільки для таких "фокусів". А тому я сподіваюся на спілкування з людьми, які знають цю область.
Коротко, знайшов обробник, переписав код. Тепер можна все одно чіпляти відповідь,навіть за цієї помилки. Можливо, ще потрібно буде підправити, але сенс такий:
$client = new SoapClient("http://sos/webService.wsdl", array("trace"=>1, "exceptions"=>0)); $response = $client->f("ibm");
if(strpos($fault_string, 'looks like we got no XML document') !== FALSE) < // trap the expected error // get the text of the response $response = $client->__getLastResponse();
// Find the start of the xml $xml_start = strpos($response, '');
// get only the xml $response = substr($response, $xml_start, $xml_end - $xml_start + 1); //echo $soapFault;
$response = trim(str_replace("\n", '', $response));
> else // the exception is not the one we were expecting so do something appropriate > > echo($response);
Тепер наткнувся ще на такий фокус, що кодування відповіді сервера залежить від операційної системи. Тобто, шлю з-під вінди - windows-1251 з-під лінукса - utf-8
Підкажіть, може, хто знає, як встановити потрібну?