2010-11-04 72 views
0

我想在我的Flex应用程序和我的XMLRPC Python服务器之间使用XMLRPC机制。带有XMLRPC Python服务器的AS3 RemoteObject:“NetConnection.Call.BadVersion”问题

我的服务器:

class ServerMockUp(SimpleXMLRPCRequestHandler): 
# Services path declaration 
rpc_paths =() 

myServer = SimpleXMLRPCServer(("localhost", 80), 
         requestHandler=ServerMockUp, 
         logRequests=True) 

def isUserAuthenticated(key, time): 
    print "[loginService > isUserAuthenticated]" 
    print ":key='%s' :time=%d" %(key, time)  
    return True 

if __name__ == '__main__': 
    # Services registration 
    myServer.register_function(isUserAuthenticated) 
    myServer.register_introspection_functions() 
    # Start server ... 
    myServer.serve_forever() 

我services-config.xml文件:

... 
    <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> 
     <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> 
    </channel-definition> 
    ... 

,这是出现连接错误:

faultCode:Client.Error.MessageSend faultString:'Send failed' faultDetail:'Channel.Connect.Failed error NetConnection.Call.BadVersion: : url: 'http://localhost/MyApp/messagebroker/amf'' 

当调试我XMLRPC服务器,例外情况是(在SimpleXMLRPCServer类中):

params, method = xmlrpclib.loads(data) 

错误:

str: <?xml version='1.0'?> 
<methodResponse> 
<fault> 
<value><struct> 
<member> 
<name>faultCode</name> 
<value><int>1</int></value> 
</member> 
<member> 
<name>faultString</name> 
<value><string>&lt;class 'xml.parsers.expat.ExpatError'&gt;:not well-formed (invalid token): line 1, column 0</string></value> 
</member> 
</struct></value> 
</fault> 
</methodResponse> 

非常感谢您的帮助!

问候

安东尼

回答

0

或许这是与objectEncoding

尝试设置它来AMF0:

nc.defaultObjectEncoding = ObjectEncoding.AMF0; 

只需连接之前。