![]() |
работа с WebService
Доброго дня
я новайс во Флексе, посему извините за быть может дурной вопрос суть вопроса такова - как более оптимально передавать объекты на вебсервис и обратно? Простые типы, вроде интов и стрингов туда-сюда ходят нормально :) а вот какой-то класс чуток посложнее вызывает у меня трудности. Сразу пример есть класс Код:
package my.entity;если я рассматриваю результат operation, как xml, то получаю следующую: Код:
<getTurnResponse xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://my/xsd">И как с клиента на сервер передавать? Тоже переводить руками в xml, а на стороне сервера собирать объект? Думаю, что есть нормальные решения, однако в хелпе не нашел и первая попытка прогуглить тоже успеха не принесла PS. Впрочем распарсить сие тоже не получается. Как в хелпе - не работает Код AS3:
|
Для класс мапинга класс надо регистрировать в mx.rpc.xml.SchemaTypeRegistry (смотреть >> тут << ). Потом ваш VO объект должен содержать либо public свойства, либо get | set свойства, а не getter/setter методы.
Что то типа Код AS3:
Menu - > Data - > Import Web Service. Один раз просматрев что генерируется можно лучше понять как именно флекс работает с вебсервисами. |
Супер! По идее это отличная возможность решения проблемы, но...
после автогенерации классов из wsdl я пытаюсь дернуть один из методов и получаю ошибку Код:
TypeError: Error #1090: XML parser failure: element is malformed.Код:
<?xml version="1.0" encoding="utf-8"?>Код:
public class WS { |
еще б знать что такое WS и что конкретно делает метод getTestUnit () да и посмотреть что приходит и уходит с сервера.
А так только гадать. |
Вложений: 1
сделаем поправку на позднее время. Повторил перегенерацию кода в клиенте - ошибка пропала. Но всё равно не всё ладно в датском королевстве.
теперь в евенте сидит объект правильного типа (ура!), но пустой ([object Unit] : NaN:NaN:null) :( я приаттачил сырцы в архив, чтоб не делать огромный пост тут и не было угадайки, надеюсь, получится в них глянуть? !.zip - там два серверных класса, WS (вебсервис) и сам Unit, а так же сгенеренный wsdl и то, что сгенерил ФлексБилдер на стороне клиента |
в архиве нету описания xsd твоего типа Unit (XSD линкованный: xmlns:ns0="http://entity.my/xsd").
Потом стоит все таки посмотреть что именно между сервером и флэшем проходит (в каком нить снифере например) А так вроде все правильно. З.Ы. А генератор адобе подравили в 2.0.1 был такой ужасный. З.Ы. Если клиент только на флэше, может стоит посмотреть в сторону AMF (там и класс маппинг проще, и все что нужно уже для этого встроенно в флэш плеер) AMF, OpenAMF, BlazeDS |
Цитата:
вот: Код:
<xs:schema xmlns:ax21="http://entity.my/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://entity.my/xsd">Цитата:
Цитата:
По правде говоря, я к вебсервисам вышел после того, как попробовал HTTPService, но они чем-то мне не понравились... Потом я взялся за OpenAMF, но там погряз окончательно... мало документации, не понятная, туториала не нашел... короче, забросил и остались мне вебсервисы. Жаль, что я не наткнулся на BlazeDS раньше. Спасибо за подсказку. PS. Наверное вскорости стоит ожидать вопросов по теме BlazeDS :D PPS. И, для закрытия гештальта, в каких случаях стоит использовать вебсервисы, а в каких можно обойтись маппингом, который предоставляет тот же BlazeDS? Если у меня несколько разных приложений работает с сервером (типа сайт, удаленный клиент), то лучше вебсервис? Или по другому критерию нужность определяется? |
Проглядел я описание :)
Насчет что лучше: (Я тоже не большой спец) Если использовать несколько клиентов, то я б использовал более общий протокол - типа SOAP, а не AMF. А посмотреть результат можно впринципе и без снифера, поставив breakpoint в result handler'e и пробежавшись по стэку вызовов методов. З.Ы. Я обычно таким образом вызываю методы Вебсервисов Код AS3:
|
| Часовой пояс GMT +4, время: 16:51. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.