BlazeDS를 통해 ColdFusion 서버에 간단한 Flex AMF 호출을 시도합니다. RemoteObject를 사용하여 서버에 로그인 요청을 보내고 성공 또는 실패로 응답하려고합니다. 어떤 이유로 BlazeDS에 데이터가 도착하면 deserializaion 중에 메시지 본문이 삭제됩니다 (제 생각에). 여기 ColdFusion/BlazeDS 로그 코드와 CFC 및 Flex ActionScript 호출이 있습니다.AMF 본문이 비 직렬화에 놓임
모든 도움을 주시면 감사하겠습니다. 감사!
[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>
이 매개 변수가 배열로 바뀌고 있습니다. 그건 맞지 않아. 또한 값은 대문자입니다. Flex 측에서 전달하는 것입니까? Flex 측에서 "username"객체 란 무엇입니까? 그냥 문자열이야? –
개체를 보내는 Flex 코드를 제공하십시오. –
@James, 예, flex에서 전달되는 값은 두 개의 문자열입니다. 설정 한 테스트의 경우 각 필드에 대해 "Username"과 "Password"라는 테스트 문자열을 보냈습니다. RemoteObject 인수에서 사용자 이름과 비밀번호는 단지 문자열입니다. RemoteObject 호출을 통해 변수를 전달하도록 지시 받았기 때문에이를 객체에 넣었습니다. 말이 돼? 도와 주셔서 감사합니다! – mbseid