ruby httparty получить ответ URL или идентификатор после сообщения - PullRequest
16 голосов
/ 23 августа 2010

Как я могу получить URL-адрес или идентификатор ответа из проекта rails с httparty в отдельном скрипте после создания сообщения?

скрипт ruby:

  HTTParty.post('http://localhost:3000/change_logs', parameters)

response.body и все остальные не отображают URL и идентификатор ответа

Ответы [ 3 ]

29 голосов
/ 12 апреля 2012

Два года спустя я нашел способ доступа к последнему URI из атрибута request в response:

url      = "http://example.com/redirects/to/www"
response = HTTParty.get(url)
response.request.last_uri.to_s
# => "http://www.example.com"
3 голосов
/ 23 августа 2010

К сожалению, эта информация не хранится в HTTParty.Когда он сталкивается с перенаправлением, он будет следовать за перенаправлением и вернет результат этого запроса.Он не сохранит никакой информации из исходного запроса.

Хорошая новость заключается в том, что подобное поведение (как правило) предсказуемо.Веб-приложения обычно перенаправляют на те же самые вещи после запроса на URL-адрес.

Но если вы действительно хотите это сделать, вам придется использовать библиотеку net / http, которая поставляется с Ruby.Это не намного сложнее, чем HTTParty, так что это не намного больше работы.

0 голосов
/ 23 августа 2010

Это работает для меня, хотя, вероятно, есть лучший способ сделать это, хотя ..

get_change_log_id = HTTParty.post('http://localhost:3000/change_logs.xml', parameters).to_a

get_change_log_id.each do |r|
  r.each do |sub|
    sub2 = sub.to_a
      sub2.each do |s|
        if s.index "id"
          @change_log_id = s.to_s.sub(/[i]/, '').sub(/[d]/, '')
        end
      end
  end
end
...