0

我使用 Flash Builder 的 4.5 功能为给定的 SOAP 服务自动生成代理类。除了 WSDL url 被硬编码到自动生成的代理类中之外,一切都很好。

现在,当我将 Flex 应用程序部署到生产服务器上时,我想更改 SOAP 服务的路径,该路径将从配置文件中获取。服务的内部结构将完全相同。在下面的代码片段中,我尝试在自动生成的代理的子类中手动交换 wsdl url,这是 Adob​​e 推荐的方法......

/**
     * 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 位置?

4

2 回答 2

2
  • 将 .model 文件夹放入您的 flex 项目包并打开 .fml 文件
  • 更改 wsdl 的 uri

当我想部署我的 fb 项目时,我会这样做,因为 adobe 没有这方面的信息。

。对不起我的英语不好 :)

于 2011-10-14T21:09:47.913 回答
1

已经很晚了,但我今天偶然发现了同样的问题,这是我解决它的方法:

  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();
    }
    
于 2014-01-27T16:46:29.520 回答