Изменение WSDL автоматически сгенерированных классов сервисных прокси Flex 4.5

Я использовал возможность Flash Builder 4.5 для автоматического создания прокси-класса для данной службы SOAP. Все работает отлично, за исключением того факта, что URL-адрес WSDL жестко запрограммирован в автоматически сгенерированный прокси-класс.

Теперь, когда я развертываю приложение Flex на производственном сервере, я хочу изменить путь к службе SOAP, который будет получен из файла конфигурации. Внутреннее устройство сервиса будет точно таким же. В приведенном ниже фрагменте кода я пытаюсь вручную заменить URL-адрес wsdl в подклассе автоматически сгенерированного прокси, что является рекомендуемым подходом Adobe ...

/**
     * Override super.init() to provide any initialization customization if needed.
     */
    protected override function preInitializeService():void
    {

        super.preInitializeService();
        // Initialization customization goes here

        super.wsdl = "http://s174667r2ycj0l1/mscviewer/MySecretService.asmx?wsdl";
        super.useProxy = false;
    }

Однако я всегда получаю следующую ошибку: «[RPC Fault faultString =» Вы должны указать расположение WSDL с useProxy, установленным в false. »FaultCode =« Client.WSDL »faultDetail =« null »] в mx.rpc.soap :: WebService / loadWSDL () "

Может ли кто-нибудь сказать мне, что я здесь делаю не так, или есть лучший способ поменять местами wsdl?


person user163757    schedule 26.08.2011    source источник
comment
Та же проблема. Вы нашли какое-нибудь решение?   -  person Snote    schedule 26.09.2011


Ответы (2)


  • Перейдите в папку .model в пакете проекта Flex и откройте файл .fml.
  • Измените uri для вашего wsdl

Я делаю это, когда хочу развернуть свои проекты в fb, потому что у Adobe нет информации об этом.

.Извините за мой английский :)

person 4ur3    schedule 14.10.2011

Уже довольно поздно, но сегодня я наткнулся на ту же проблему, вот как я ее решил:

  1. Я создал синглтон ConfigLoader, отвечающий за загрузку конфигурации через файл XML.

  2. В моем классе веб-сервиса:

    import com.adobe.fiber.core.model_internal;
    import flash.events.*;
    
    protected override function preInitializeService():void
    {
       ConfigLoader.instance.addEventListener('config_file_loaded',confLoaded);
       ConfigLoader.instance.load();
    }
    
    private function confLoaded(e:Event):void
    {
       _serviceControl.service = "bModelo";
       _serviceControl.port = "bModeloSoap";
       wsdl = ConfigLoader.instance.url;
       model_internal::loadWSDLIfNecessary();
    }
    
person Stentor    schedule 27.01.2014