刚接触Flex,在学习BlazeDS的时候,碰见这个问题,调了一天也不知道为什么
错误[RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:8080/WebContent/messagebroker/amf'"]
上网狂搜,终于解决了。
参考http://www.cnblogs.com/adaikiss/archive/2010/08/17/1801231.html
发送请求总是404 NOT FOUND! 后来在网上看到有人提到
http://localhost/WebContent/messagebroker/amf
对比自己的请求,也是这样的...
services-config.xml里明明是
http://{server.name}:{server.port}/{context.root}/messagebroker/amf
的,我的webapp访问用的也是项目名,而不是WebContent呀,然后试着把services-config.xml里的
{context.root}用项目名替换,不成功,然后去项目根目录看,发现
.flexProperties文件里有段
<flexProperties enableServiceManager="false" flexServerFeatures="4" flexServerType="8" flexWarLocation="E:/blazeds.war" serverContextRoot="/WebContent" serverRoot="E:/workspaces/flex/WebContent" serverRootURL="http://localhost:80/flex" toolCompile="true" useServerFlexSDK="false" version="2"/>
真凶终于出来了...就是serverContextRoot="/WebContent"这个,把它改成项目名,问题就解决了...
这个是创建项目时自动生成的,谁知道它会这么傻...
还有一种方法是说在mxml中的RemoteObject对象定义时加上endpoint="messagebroker/amf" 属性。(这个没试过)
但是为什么会这样?项目由eclipse自动生成,难不成每次都要去改这个.flexProperties文件?
还有就是serverContextRoot,serverRoot,serverRootURL分别有些什么用?请明白的大侠指导下,谢了!