flex webservice fault:HTTP请求错误

时间:2009-02-17 12:03:41

标签: flex web-services fault

我正在使用Flex 3和WebService组件。我开始遇到以下错误

 HTTP request error

调用服务方法时。这个错误只出现了,我无法弄清楚是什么导致它

 <mx:WebService
    useProxy="false"
    id= "myService">
         <mx:operation name="getName" resultFormat="object"
        result="getNameResultHandler(event)"
        fault="faultHandler(event)"/>
 </mx:WebService>

我设置wsdl im我的init方法,我将其作为flashvar读入。任何想法?

我用来拨打电话的代码如下:

var id:Strig = Application.application.parameters.id;
mysERVICE.getname(id);

确定我在发生错误时看到以下内容

[RPC Fault faultString="HTTP request error" faultCode="Server.Error.Request" faultDetail="Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://localhost:9081/app/services/RoomLookup"]. URL: http://localhost:9081/`app/services/RoomLookup`"]

它显示的网址与teh wsdlUrl不同,我提供的参数是

app/services/RoomLookup

是flex附加localhost或者这可能是存储在缓存中的东西


我已经记录了这个并获得“Http Request error”

3 个答案:

答案 0 :(得分:4)

大多数SOAP和RPC框架都会将错误响应的HTTP状态代码设置为500。 Flash Player无法处理状态代码为500的HTTP响应的内容,因此可能难以使用。不幸的是,没有办法在播放器中解决这个问题,所以最常见的方法似乎是确保服务器不为用户代理为的请求设置错误响应的HTTP状态500。一个Flash Player。

答案 1 :(得分:2)

将以下内容添加到faultHandler()

trace(event.fault.faultString, "Error");
if (event.fault is SOAPFault) {
    var fault:SOAPFault=event.fault as SOAPFault;
    var faultElement:XML=fault.element;
    // ...
}    

这会给你一些开始挑选的东西。

答案 2 :(得分:1)

使用像Fiddler这样的http调试器来查找确切的请求/响应。 Flex不会暴露肥皂错误的细节,或者至少它没有使用。例如,请参阅here