2013-04-05 1 views
0

AMF 본체를 serialize하고 RestClient.post와 함께 보내려고합니다. (AMF 본체를 serialize하고 Ruby RocketAMF로 보내는 방법

# s is the raw binary from request body 
pp RocketAMF::Envelope.new.populate_from_stream(s).messages 

enter image description here

을하지만, 나는 그런 객체를 직렬화하는 방법을 파악하고 보낼 수 없습니다 : 찰스 프록시에서

, 내 요청 본문을 직렬화 및 표시를 다음과 같이 할 수 있습니다 RestClient.post와 함께).

답변

2

사용중인 URL을 변경하고 싶지만 다음은 올바른 방법입니다.

require 'rubygems' 
require 'RocketAMF' 
require 'rest-client' 

data = [] # whatever data you want 
env = RocketAMF::Envelope.new :amf_version => 3 
env.messages << RocketAMF::Message.new('BatchController.authenticate_iphone', '/1', data) 
res = RestClient.post "http://localhost:9292/amf", env.to_s, :content_type => 'application/x-amf' 
puts RocketAMF::Envelope.new.populate_from_stream(res).inspect 
+0

고마워요. env.messages = RocketAMF :: Message.new ('BatchController.authenticate_iphone', '/ 1', data) – ccy

+0

데이터 배열을 만드는 방법에 대한 추가 질문이 있습니다. 추가 된 Charles에서 AMF 요청 스크린 샷을 deserialize 할 때 "Object"Type 및 "Command"Value 속성이 있습니다. 클래스 메쏘드'command = ClassCommand.new'와'RocketAMF :: ClassMapper.define {| m | myp : as => 'Command', : ruby ​​=> 'ClassCommand'}'하지만, 'rocketamf/class_mapping.rb : 220 : in props_for_serialization 블록'과 비교 : 잘못된 인자 (0은 1) (ArgumentError)' – ccy