*Бьюсь об стенку* VS создала прокси-класс, но не видит, что listOfGames массив и я не могу получить доступ к другим, кроме первой, строкам Что-то я не так сделал при объявлении listOfGames. А если добавить [], то VS ругается.
HTML: <!-- array of struct --> <xsd:complexType name="ArrayOfrecord" > <xsd:complexContent> <xsd:restriction base="soapenc:Array"> <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="tns:record"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="record"> <xsd:sequence> <xsd:element name="id" type="xsd:int" nillable="true"> </xsd:element> <xsd:element name="name" type="xsd:string"></xsd:element> <xsd:element name="desc" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType>
C пространством soapenc VS даже не хочет читать WSDL и пишет, что такое пространство имён не задано, глянул - в WSDL у меня SOAP-ENC (я его раньше пробовал) - результат как и раньше - выдаёт 4 предупреждения и одну ошибку, что не может создать прокси-класс. HTML: <xsd:complexType name="oneGame"> <xsd:all> <xsd:element name="id" type="xsd:int"/> <xsd:element name="user1" type="xsd:string"/> <xsd:element name="user2" type="xsd:string"/> <xsd:element name="money" type="xsd:int"/> <xsd:element name="typeG" type="xsd:string"/> <xsd:element name="status" type="xsd:int"/> <xsd:element name="winner" type="xsd:string"/> </xsd:all> </xsd:complexType> <xsd:complexType name="listOfGames"> <xsd:complexContent> <xsd:restriction base="SOAP-ENC:Array"> <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:oneGame[]"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> Аналог такого объявления в NuSOAP: PHP: $server->wsdl->addComplexType( 'listOfGames', 'complexType', 'array', '', 'SOAP-ENC:Array', array(), array( array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:oneGame[]') ), 'tns:oneGame' ); Хм... если использовать ранее скомпилированную версию, то нормально общается с таким вариантом WSDL - пакеты точно такие же приходят, но вот главное - научить VS "видеть" массив. Что-то я никак из этой ямы не выберусь ПС: может подскажите, что имел ввиду автор последнего поста тут У меня последний его вариант норм пашет - типа передавать чисто структуру, а вот работает ли у него передача массива структур - я так и не понял.
Ну это не PHP выдаёт. Может есть другие способы в WSDL задать массив? Или только SOAP-ENC:arrayType? Как-то вот не дружит с подобными вещами. Могу лишь предположить, что подобное объявление относится к encoded, а VS переваривает только literal. Да точно... пишит, что подобное возможно лишь для Encoded
А это неважно важно что есть ошибки и их надо разобрать и исправить - тогда все заработает. Может и есть Я ссылку давал.
Вот плина - даже капиталисты ничем не помогут Там внизу в комментах у чела такая же трабла как и у меня - ему посоветовали юзать REST . Видно не судьба ... А какая ссылка на спецификацию 1.2 или какая там последняя? Хы... для arrayType нашёл namespace xsd. Осталось "пристроить" Array.
Решить можно все. Если делать самому, но лично мне лень Передавайте структуры в XML, как mime там есть режим для этого или даже просто как строку. А в Silverlight парсьте - неудобно, но решение. гугл уже закрылся?
Вот эти два момента интересны. Вот интересно - можно ли собрать строку JSOn на PHP и отправить в качестве ответа? (если можно - пару ссылок на классы, который бы облегчили заполнение JSOn строки на PHP) ПС: попробовал wsdl:documented - что-то не прокатило
Тут говорится, что поддержка встроена в 5.2.0+ У меня на хостинге PHP Version 5.1.6 и что-то не видно упоминания про JSON. Что-то сцыкотно мне опять
Берем и ищем в гугле соответствующую имплементацию на чистом php. Как вариант просим хостера обновить PHP или меняем хостера.
ДА ну нафик этого хостера - сдам курсач и пошли они ... А вот на чистом PHP что-то найти не могу... либы и те требуют PEAR. Что-то я устал - аж спина заболела Завтра попробую JSON или REST, если не посетит какая-нибудь "очередная сумасбродная идея". Или просто забью на пересылку многомерных массивов - и так сделал выше крыши. Хотя для себя хотелось бы добить это, но что-то мне ограниченность SL уже поднадоела - видно, заточена только под WCF. Кстати, на буржуйских сайтах все рекомендую WeBOrb. Где-то у меня старая версия валялась. Подскажите - стоит ли пробовать или зря время потрачу, которого уже ой как мало осталось? ПС: вот, кажись, кто-то добрый сам написал функцию из массива в JSON
Заюзал функцию стандартную $strToSend=json_encode($objToEncode); и получил: HTML: <return> [ { "id":"1","user1":"LiTR","user2":"Teon","money":"15","typeG":"1","status":"0","winner":"LiTR" } , { "id":"2","user1":"cheater","user2":"Genom","money":"30","typeG":"2","status":"0","winner":"cheater" } ] </return></ С "этим" проблем не будет?.. Это так кавычки передёрнуло?
Заменил возвращаемый тип с string на anytype: HTML: <return> [{"id":1,"user1":"LiTR","user2":"Teon","money":15,"typeG":1,"status":0,"winner":"LiTR"}, {"id":2,"user1":"cheater","user2":"Genom","money":30,"typeG":2,"status":0,"winner":"cheater"}] </return> Вроде бы сделал - норм принимает значения
Здравствуйте! Я тоже использую библиотеку Nusoap. Помогите пожалуйста. Проблема в том что сервис написан не на РНР и там есть WSDL до которой я достучился с помошью Nusoap РНР. Как я понимаю WSDL должен быть один который на сервере а клиент вызывает этот WSDL и передает через него данные или я не прав? Праблема в том что я передаю с базы данных MySQL таблицу в виде ассоциативного массива, но при этом на сервере получается нечитабельном виде. То есть мне надо подогнать библиотеку под UTF-8.
Всдл это файл с описанием методов. Открой в текстовом редакторе и посмотри что внутри. В критических можно использовать вместо справочника.