2014-11-03 6 views
0

У меня есть два рельсовых приложения. Приложение № 1 отправляет запрос на отправку от действия контроллера на другое действие контроллера в приложении №2. Я хочу иметь возможность читать в приложении № 1 ответ на этот POST.Получить HTTP POST-ответ в Rails-контроллере

приложение # 1 Контроллер:

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' => '[email protected]' 
    } 
    # send the request 
    resp, data = Net::HTTP.post_form(url, post_args1) 

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

приложение # 2 Контроллер:

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

Вопрос заключается в том, как можно прочитать: маркер и: tokenMnemonic от ответа POST полученные на контроллер App # 1.

ответ

2

Переменная resp представляет собой объект отклика. Вы можете использовать метод #body, чтобы получить тело ответа как String.

Если тело является строковой сериализацией JSON, просто проанализируйте его, чтобы извлечь элементы.

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

Да! Оно работает! Я понимаю, что это синхронный ПОСТ, верно? – Mike

+1

Да, это правильно. –

+0

Симоне, извините, что связался с вами так, но я не знал, как еще связаться с вами. Я заметил, что вы проголосовали за мой вопрос http://stackoverflow.com/questions/26743387/how-to-increment-upvote-total-in-my-view-after-successful-ajax-request-to-upvote в ожидании. Теперь он стал более понятным, и мне очень скоро нужно ответить. Пожалуйста, подумайте о том, чтобы снять свой голос, чтобы я мог поместить на него щедрость как можно скорее. –

Смежные вопросы