SOAP + PHP

A
На сайте с 01.02.2010
Offline
0
3160

Добрый день, мне необходимо на php при помощи SOAP загрузить данные поиска.


$book="Азазель";
$author="Акунин";

$client = new SoapClient(NULL,
array(
"location" => "http://www.ozon.ru/webservice/webservice.asmx",
"uri" => "http://schemas.xmlsoap.org/soap/envelope/",
"style" => SOAP_RPC,
"use" => SOAP_ENCODED
));

$xxx=$client->__soapCall(
/* Имя SOAP-метода */
"SearchWebService",
/* Параметры */
array(
new SoapParam
(
/* Значение параметра */
utf8_encode("Азазель+Акунин"),
/* Имя параметра */
utf8_encode("searchText")
),
new SoapParam
(
/* Значение параметра */
"div_book",
/* Имя параметра */
"searchContext"
)
),
/* Опции */
array(

/* HTTP-заголовок SOAPAction для SOAP-метода */
"soapaction" => "http://www.ozon.ru/SearchWebService"
));

Вот запрос, который уходит на OZON

<?xml version="1.0" encoding="UTF-8" ?> 

- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="ttp://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
- <SOAP-ENV:Body>
- <ns1:SearchWebService>
<searchText xsi:type="xsd:string">&#192;&#231;&#224;&#231;&#229;&#235;&#252;+&#192;&#234;&#243;&#237;&#232;&#237;</searchText>
<searchContext xsi:type="xsd:string">div_book</searchContext>
</ns1:SearchWebService>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Вот что получаю в ответ от OZON:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><SearchWebServiceResponse xmlns="http://www.ozon.ru/" /></soap:Body></soap:Envelope>


Где я ошибся?

OR
На сайте с 12.03.2008
Offline
123
#1

Мы не программируем на PHP, поэтому нам сложно сказать, что Вы делаете не так с точки зрения использования SoapClient на PHP.

Скорее всего - неправильная кодировка в тексте запроса. Именно поэтому ничего и не находится.

Вот подробнее помощь по PHP.

The encoding option defines internal character encoding. This option does not change the encoding of SOAP requests (it is always utf-8), but converts strings into it.

При задании SoapClient ему нужно было указать кодировку его сайта/робота, например, вот так:

$server = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1'));

и больше не конвертить данные, которые отдаются в SoapParam. SoapClient сделает это сам, судя по документации.

Служба поддержки партнерской программы OZON.ru (http://www.ozon.ru/context/partner/) Регистрация партнера (http://www.ozon.ru/?context=partner_join), Обратная связь (http://www.ozon.ru/context/partner_feedback/)
S
На сайте с 14.03.2010
Offline
0
#2

Добрый день, arsnov!

Смогли разобраться? Перерыл весь интернет, рабочих примеров для Озона не нашел. Если что-то получилось, приведите пожалуйста пример?

СД
На сайте с 21.03.2009
Offline
28
#3

Можно запрос отправлять не через SOAP, а через GET, в примерах веб-сервисов это есть. А ответ разбирать через DOM, например (или регулярными выражениями :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий