Тело AMF упало на десериализацию - PullRequest
1 голос
/ 25 марта 2011

Я пытаюсь сделать простой вызов Flex AMF к серверу ColdFusion через BlazeDS.Используя RemoteObject, я пытаюсь отправить запрос на вход в систему на сервере и отвечаю успешно или неудачно.По какой-то причине, когда данные попадают в BlazeDS, тело сообщения отбрасывается во время десериализации (я думаю).Вот мой код журнала ColdFusion / BlazeDS и вызов CFC и Flex ActionScript.

Любая и вся помощь приветствуется.Спасибо!

[BlazeDS]Channel endpoint my-cfamf received request.
[BlazeDS]Deserializing AMF/HTTP request
Version: 3
  (Message #0 targetURI=null, responseURI=/3)
    (Array #0)
      [0] = (Typed Object #0 'flex.messaging.messages.RemotingMessage')
        source = "service.UserService"
        operation = "authenticateUser"
        destination = "ColdFusion"
        timestamp = 0
        headers = (Object #1)
          DSEndpoint = "my-cfamf"
          DSId = "883A97CF-4A08-0B8E-9056-1BF562A40EB4"
        body = (Array #2)
          [0] = "Username"
          [1] = "Password"
        clientId = null
        messageId = "D1743AB9-54B8-E73C-85C7-E990DE7F1ECE"
        timeToLive = 0

[BlazeDS]Before invoke service: remoting-service
  incomingMessage: Flex Message (flex.messaging.messages.RemotingMessage) 
    operation = authenticateUser
    clientId = 883AAF5D-900B-410A-1E8B-3B3FBD6552A6
    destination = ColdFusion
    messageId = D1743AB9-54B8-E73C-85C7-E990DE7F1ECE
    timestamp = 1300998708880
    timeToLive = 0
    body = null
    hdr(DSId) = 883A97CF-4A08-0B8E-9056-1BF562A40EB4
    hdr(DSEndpoint) = my-cfamf


-- Flex
            remoteUserService = new RemoteObject;
            remoteUserService.destination = "ColdFusion";
            remoteUserService.source = "service.UserService";
            remoteUserService.authenticateUser.addEventListener("result",  authenticate_requestComplete);
            remoteUserService.authenticateUser.addEventListener("fault",  authenticate_requestFailure);     
            remoteUserService.authenticateUser({username:username, password:password});

-- ColdFusion

    <cffunction name="authenticateUser" access="remote" returnType="Struct">
        <cfargument name="username" type="string">
        <cfargument name="password" type="string">


        <cfset ret = getAuthenticationService().authenticate(username, password) />

        <cfreturn ret>
    </cffunction>

1 Ответ

1 голос
/ 29 марта 2011

Почему бы не передать учетные данные в виде двух строк вместо создания объекта?Таким образом, они будут отображаться в области ваших аргументов в CF.В качестве альтернативы вы можете упаковать его в объект передачи данных, но это кажется излишним для этого.

...