AS3 RemoteObject с XMLRPC Python Server: проблема «NetConnection.Call.BadVersion» - PullRequest
0 голосов
/ 05 ноября 2010

Я хочу использовать механизм XMLRPC между моим приложением Flex и моим сервером XMLRPC Python.

Мой сервер:

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()

Файл My 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, исключение составляет catch (в классе 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>

Большое спасибо за вашу помощь!

Привет

Anthony

1 Ответ

0 голосов
/ 05 ноября 2010

Возможно, это как-то связано с objectEncoding .

Попробуйте установить его в AMF0 с помощью:

nc.defaultObjectEncoding = ObjectEncoding.AMF0;

Непосредственно перед подключением.

...