0

我使用 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 设置为我的 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`"]

它显示的 url 与我作为参数提供的 wsdlUrl 不同

app/services/RoomLookup

是 flex 附加本地主机还是这可能是存储在缓存中的东西


我已经记录了这个并得到“Http请求错误”

4

3 回答 3

4

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

于 2009-02-17T15:06:38.263 回答
2

将以下内容添加到faultHandler()

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

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

于 2009-02-17T12:08:47.880 回答
1

使用像Fiddler这样的 http 调试器来找出确切的请求/响应是什么。Flex 没有公开soap 错误的细节,或者至少它不习惯这样做。例如,请参见此处。

于 2009-02-17T12:18:04.503 回答