1

我正在尝试通过 BlazeDS 对 ColdFusion 服务器进行简单的 Flex AMF 调用。使用 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>
4

1 回答 1

1

Why not pass the credentials across as two strings instead of creating an object? That way they will show up in your arguments scope in CF. Alternatively you can package then in a data transfer object but that seems like overkill for this.

于 2011-03-29T00:45:22.260 回答