web-dev-qa-db-ja.com

RubyでHTTPPUTリクエストを送信するにはどうすればよいですか?

特定のURLにPUTリクエストを送信しようとしていますが、これまでのところ成功していません。

this などのHTTPリクエスターGUIを介して実行している場合、次のURLでPUTを実行するのと同じくらい簡単です。

http://www.mywebsite.com:port/Application?key=apikey&id=id&option=enable|disable

上記のリクエストでは、ポート番号が指定されていることに注意してください。 Rubyコードを介してリクエストを送信するときにも、これを行う必要があります。

このようなリクエストをRubyで複製するにはどうすればよいですか?

20
finiteloop
require 'net/http'

port = 8080
Host = "127.0.0.1"
path = "/Application?key=apikey&id=id&option=enable"

req = Net::HTTP::Put.new(path, initheader = { 'Content-Type' => 'text/plain'})
req.body = "whatever"
response = Net::HTTP.new(Host, port).start {|http| http.request(req) }
puts response.code

ラリーの答えは私を正しい方向に向けるのに役立ちました。もう少し掘り下げることで、この答えに導かれるよりエレガントな解決策を見つけることができました。

http = Net::HTTP.new('www.mywebsite.com', port)
response = http.send_request('PUT', '/path/from/host?id=id&option=enable|disable')
31
Larry OBrien