пятница, 9 ноября 2007 г.

Вэб Сервисы в AS 3.0 release 1.0

Столкнулись недавно с проблемой, нужно было использовать ВЭБ Сервисы в AS 3.0, а там как известно их нет. Писать парсер самим не хотелось, вооружились гуглом. В результате после недолгих поисков нашли вот это. Попробовали использовать это с нашим Java-сервером. Наши WDSL документы генерировались с помощью X-Fire. После парсинга, не находились Вэб Сервис методы. В результате, наш Java-developer Владимир aka red, нашел ошибку в классе WDSL (WDSL.as). Достаточно заменить существующую функцию getBinding, той что пердставленна ниже, и все заработает.

ВНИМАНИЕ! Этот код проверялся с X-Fire сгенерированными WDLS документами, использование кода на ваш страх и риск.


 

private function getBinding(portType:String):String{

var wsdl:Namespace = __rawWSDL.namespace();

var service:XMLList = __rawWSDL.wsdl::service;

// var myPort:XMLList = service.wsdl::port.(@name == portType);

var binding:XMLList = __rawWSDL.wsdl::binding.(@type.substr(@type.indexOf(":")+1) == portType);

var addressNS:Namespace = service.wsdl::port.children()[0].namespace();

__servicePath = service.wsdl::port.addressNS::address.@location;

var bindingAmount:Number = binding.length();

if (bindingAmount == 1){

return (binding.@name);

} else if(bindingAmount >0 ) {

return binding[0].@name;

}

return("");

}

Комментариев нет: