16

投稿を行った後、別のスクリプトで httparty を使用して Rails プロジェクトから応答 URL または ID を取得するにはどうすればよいですか?

ルビースクリプト:

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

response.body と他のすべてのものは、URL と応答 ID を表示しません

4

3 に答える 3

32

2 年後、 のrequest属性から最後の URI にアクセスする方法を見つけましたresponse

url      = "http://example.com/redirects/to/www"
response = HTTParty.get(url)
response.request.last_uri.to_s
# => "http://www.example.com"
于 2012-04-12T07:35:25.217 に答える
3

残念ながら、その情報は HTTParty によって保持されません。リダイレクトに遭遇すると、リダイレクトに従い、そのリクエストの結果を返します。元のリクエストの情報は保存されません。

幸いなことに、このような動作は (通常) 予測可能です。Web アプリは通常、URL へのポスト リクエストの後に同じものにリダイレクトします。

しかし、本当にこれを行いたい場合は、Ruby に付属の net/http ライブラリを使用する必要があります。ただし、HTTParty ほど難しくはないので、それほど手間はかかりません。

于 2010-08-23T07:48:22.007 に答える
-1

これは私にとってはうまくいきますが、おそらくこれを行うためのより良い方法があります..

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
于 2010-08-23T15:26:13.697 に答える