0

我正在 Mate 框架之上开发一个 Flex 应用程序。在这个应用程序中,我使用 Web 服务来检索数据。
由于此 Web 服务不是固定位置 URL(取决于客户安装它的位置),因此我在配置文件中定义了此 URL。当 Flex 应用程序启动时,它首先读取这个配置文件,然后我想使用我找到的值来初始化 web 服务。
但目前,我不知道该怎么做。

这是我的EventMap.mxml

<EventMap>
<services:Services id="services" />

<EventHandlers type="{FlexEvent.PREINITIALIZE}">        
    <HTTPServiceInvoker instance="{services.configService}">
        <resultHandlers>
            <MethodInvoker generator="{ConfigManager}" method="loadFromXml" arguments="{resultObject}" />
        </resultHandlers>
        <faultHandlers>
            <InlineInvoker method="Alert.show" arguments="ERROR: Unable to load config.xml !" />
        </faultHandlers>            
    </HTTPServiceInvoker>

在这一部分中,ConfigManager 解析配置文件并初始化一个名为 webServiceWsdl 的可绑定属性

这是我的Services.mxml

<mx:Object>
<mx:Script>
<![CDATA[
    [Bindable] public var webservice:String;
]]>
</mx:Script>

<mx:HTTPService id="configService" url="config.xml" useProxy="false" />
<mx:WebService id="dataService" wsdl="{webservice}" useProxy="false"/>
</mx:Object>

如何初始化此 Web 服务属性?

4

3 回答 3

0

我看不出这与所讨论的有什么不同。一个是可绑定字符串,另一个是可绑定对象。

我发现当(在上面的示例中)与 Web 服务的 wsdl 参数关联的可绑定字符串发生更改时,Web 服务永远不会更新。

因此,如果字符串的值不正确,Web 服务将报错,无法找到 wsdl,并且永远不会再试……即使字符串更改了值。

普雷斯顿

于 2010-04-05T15:35:58.090 回答
0

你可以使用这个:

WebService.loadWSDL(runtimeWsdl) ;

其中runtimeWsdl是包含动态 wsdl 值的字符串类型变量。

于 2010-08-05T10:48:14.573 回答
0

创建一个单例类来封装您的配置选项并将单例实例上的属性绑定到您的服务定义中。我们这样做是公平的。

[Bindable]
class Config
{
    private static var instance:Config;

    public static function getInstance ():Config {
        if (!instance)
            instance = new Config();
        return instance;
    }

    public var WEBSERVICE:String = "default value";
}

在 Services.mxml 中:

<mx:WebService id="dataService" wsdl="{Config.getInstance().WEBSERVICE}" useProxy="false"/>

显然,当您从文件加载配置时,您需要更新配置实例。

于 2010-03-17T08:50:45.077 回答