Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SOAP ошибка при отправке запроса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Alpinist
Отправлено: 11 Апреля, 2013 - 17:35:27
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Приветствую всех! Возникла проблема при отправке запроса к SOAP сервису:
PHP:
скопировать код в буфер обмена
  1. $client = new SoapClient('http://localhost/service.asmx?WSDL', array('trace' => 1));
  2. $result = $client->FindAdv(array(
  3. 'login' => 123,
  4. 'password' => 'qwerty',
  5. 'search' => 'abc'));

на выходе получил ошибку: Instance validation error: 'abc' is not a valid value for SearchType.
Вывел __getTypes для данного сервиса и нашел такое:
CODE (html):
скопировать код в буфер обмена
  1. [19] => struct FindAdv{ long login; string password; SearchType search; }
  2. [20] => string SearchType

Как я понял надо создать свой тип данных в php и подставить его при запросе, но как?
 
 Top
caballero
Отправлено: 11 Апреля, 2013 - 17:43:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




пни поиск
php wsdl proxy generator


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Alpinist
Отправлено: 11 Апреля, 2013 - 18:00:01
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




caballero пишет:
пни поиск
php wsdl proxy generator

пнул, но там чтобы разобраться как создать свой тип данных нужно понимать что вообще из себя представляет SOAP во всех деталях, а на это времени естественно нету, поэтому прошу помощи, мне всего-то нужно воссоздать тип данных Улыбка
 
 Top
caballero
Отправлено: 11 Апреля, 2013 - 18:27:57
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




не нужно там ничего понимать
нужен только тулс который по wsdl нагенерит вам PHP классов


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Alpinist
Отправлено: 12 Апреля, 2013 - 14:44:33
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Выкладываю информацию из wsdl:
CODE (html):
скопировать код в буфер обмена
  1. <s:element name="FindAdv">
  2.  <s:complexType>
  3.   <s:sequence>
  4.    <s:element minOccurs="1" maxOccurs="1" name="login" type="s:long"/>
  5.    <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
  6.    <s:element minOccurs="1" maxOccurs="1" name="search" type="tns:SearchType"/>
  7.   </s:sequence>
  8.  </s:complexType>
  9. </s:element>
  10.  
  11. <s:simpleType name="SearchType">
  12.  <s:restriction base="s:string">
  13.   <s:enumeration value="Val"/>
  14.   <s:enumeration value="AllVal"/>
  15.  </s:restriction>
  16. </s:simpleType>

(Добавление)
Переделал запрос:
CODE (html):
скопировать код в буфер обмена
  1. $client = new SoapClient('http://localhost/service.asmx?WSDL', array('trace' => 1));
  2. $result = $client->FindAdv(array(
  3. 'login' => 123,
  4. 'password' => 'qwerty',
  5. 'search' => '0'));

вместо 'abc' передаю теперь '0', но результат тот же самый: Instance validation error: '0' is not a valid value for SearchType.
Что характерно, остальные функции с данного сервиса работают нормально, но там нету таких "особых" параметров.
 
 Top
caballero
Отправлено: 12 Апреля, 2013 - 15:45:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




попробуй передать 'AllVal' или 'Val' - он похоже ждет одно из этих значений (потому как enumeration)

но самое лучше сгенерить по WSDL классы PHP и потом их подставлять. Никто руками wsdl не разбирает


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Alpinist
Отправлено: 12 Апреля, 2013 - 16:08:21
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




caballero пишет:
попробуй передать 'AllVal' или 'Val' - он похоже ждет одно из этих значений (потому как enumeration)

Заработало, спасибо! Самое главное в документации написано что надо указать 0 или 1...
 
 Top
caballero
Отправлено: 12 Апреля, 2013 - 16:22:56
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




хз, наверно это номера строк в enumreration


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB