Rails [已解决] ActiveResource post 问题

tsinghan · 2013年12月20日 · 最后由 TsingHan 回复于 2013年12月20日 · 2457 次阅读
options = {
      "accesscode" => Settings.opensocial_code,
      "method" => "statuses_update",
      "data"  => gen_content_data(content, fan).to_json
  }
 result = post(:GWService,{}, options)

我用 ActiveResource 向 java 的程序 post 了一些数据,

我在 lib/actove_resource/connection.rb 设了断点

def post(path, body = '', headers = {})
    with_auth { request(:post, path, body.to_s, build_request_headers(headers, :post, self.site.merge(path))) }
  end

打印出发送的 body 的值为

{:accesscode=>"93f348fcdfsfse4a38a927b282c94",
 :method=>"statuses_update",
 :data=>
  {:webType=>"sina",
   :apiToken=>"2.00jT5OoBIMceNCf6a1f942f10eW_zz",
   :clientId=>"2034037976",
   :openId=>"",
   :content=>"测试测试"}}

但是 对方用 request params 那不到数据,但是用 InputStream in=request.getInputStream(); 这样才能拿到 下面的数据

{"accesscode"=>"93f348fcdfsfse4a38a927b282c94", "method"=>"statuses_update", "data"=>"{\"webType\":\"sina\",\"apiToken\":\"2.00jT5OoBIMceNCf6a1f942f10eW_zz\",\"clientId\":\"2034037976\",\"openId\":\"\",\"content\":\"测试测试\"}"}

这是什么问题?

我向自己的程序发送了一下 发现 request.body.class => StringIO

明白了 activeResource 只能发 format json 和 xml 格式的,java 那边用的是 application/x-www-form-urlencoded 接受的,用这种格式所以能用 request 拿到。 这个应该不错吧https://github.com/lostisland/faraday

需要 登录 后方可回复, 如果你还没有账号请 注册新账号