HTTPService中的动态URL无法正常工作

时间:2009-08-18 15:53:46

标签: xml flex flex3 mxml httpservice

您好,并提前感谢您提供的任何帮助。

我的AIR应用程序查询Web服务以查看要构建的组件。返回的XML示例是:

<item>
 <type>EventList</type>
 <url><![CDATA[http://dashboard/cgi-bin/dataService.pl?type=ManagedEvents]]></url>
 <index>4</index>
 <title>Index 4 eventlist</title>
 <description>Application 4</description>
</item>

我正在尝试将存储在字段中的URL传递给mxml组件的HTTPService,以便该组件可以检索一组数据。封闭的应用程序解析了上面的XML,然后执行:

component.getData(url);

组件getData中的位置是:

public function getData(url:String):void {
    ws = url;
    dataService.send();
}

<mx:HTTPService 
        id="dataService"
        url="{ws}"
        resultFormat="e4x"
        result="resultsHandler(event);"
        fault="faultHandler(event);"
        useProxy="false"
    />

调用send()后,我收到以下错误:

[FaultEvent fault = [RPC Fault faultString =“必须在useProxy设置为false的情况下指定URL。” faultCode =“Client.URLRequired”faultDetail =“null”] messageId = null type =“fault”bubbles = false cancelable = true eventPhase = 2]

关于我做错了什么的线索? (再次感谢您的帮助)

TB

2 个答案:

答案 0 :(得分:2)

这取决于你如何定义ws变量。它应该有一个[Bindable]元标记,以指定它可以用于数据绑定。例如:

[Bindable]
public var ws:String;

当然你也可以显式设置HTTPService对象的url,而不是使用数据绑定,如下所示:

public function getData(url:String):void {
    dataService.url = url;
    dataService.send();
}

希望这有帮助。

答案 1 :(得分:1)

数据绑定通过事件系统异步工作,因此在更改可绑定变量后,绑定会发生一些未指定的时间。在您的情况下,当您调用dataService.send()时,ws的更新事件尚未触发。这就是直接更改url属性的原因,而绑定则不然。

如果您需要使用数据绑定,因为您的应用程序设计阻止您直接访问服务,我建议使用您控制的getter和setter函数绑定到属性。