在Rails Controller中获取HTTP POST响应

时间:2014-11-03 14:18:04

标签: ruby-on-rails http post

我有两个rails应用程序。 App#1将控制器操作的发布请求发送到App#2中的另一个控制器操作。我希望能够在App#1中读取对该POST的响应。

App#1 Controller:

  require 'net/http'
  # get the url that we need to post to
  url = URI.parse('http://app2.com/sessions/login_request')
  # build the params string
  post_args1 = { 
    'username' => 'my@test.com' 
  }
  # send the request
  resp, data = Net::HTTP.post_form(url, post_args1)

  #HOW do I read :token and :tokenMnemonic here??

App#2控制器:

def login_request
  # do some logic here
  render :json => {
    :result => "OK",
    :token => random_token,
    :tokenMnemonic => tokenMnemonic
  }
end

问题是如何从App#1的控制器收到的POST响应中读取:token和:tokenMnemonic。

1 个答案:

答案 0 :(得分:2)

变量resp表示响应对象。您可以使用#body方法将响应正文作为String。

如果正文是JSON的字符串序列化,只需将其解析回来获取元素。

hash = JSON.parse(resp.body)
hash['token']
# => ...