2014-01-30 107 views
3

我有一個捲曲的命令,效果很好,但我需要一個Ruby腳本自動化此,curl命令相當於紅寶石

捲曲CMD:

curl -u usrname:pwd -X POST --data "del=false&val=100" http://localhost:1111/sample/path 

我寫了下面的代碼:

uri = URI::HTTPS.build(:host => "localhost", :port => 1111) 
uri.path = URI.escape("/sample/path") 
client = Net::HTTP.new("localhost", "1111") 
req = Net::HTTP::Post.new(uri.request_uri, {"User-Agent" => "UA"}) 
req.set_form_data({"del" => "false", "val" => "100"}) 
req.basic_auth("usrname", "pwd") 
res = client.request(req) 

上面的代碼工作,我有一個編碼的網址,我傳遞給URI.escape,這使我發佈這個問題關於不良響應。 Foud這個問題,並固定它:)

+0

我相信[這個答案](http://stackoverflow.com/a/929697/1088818)提供了你所要求的。 –

回答

5

您可以直接從紅寶石

usrname = "username" 
pwd = "pwd" 
val = 100 
del= false 
http_path = "http://localhost:1111/sample/path" 
puts `curl -u #{usrname}:#{pwd} -X POST --data "del=#{del}&val=#{va}" #{http_path}` 

執行curl命令和後面的每一跳都執行系統捲曲

+0

我期待在ruby中做一個http post,而不是做一個捲曲的系統調用 – user1810502

3

您可以使用curb

c = Curl::Easy.new 

c.http_auth_types = :basic 
c.username = 'usrname' 
c.password = 'pwd' 

c.http_post("http://localhost:1111/sample/path", "del=false&val=100") 
2

THE BEST &簡單的解決方案!

  1. 複製您的CURL代碼。

  2. 轉到此page

  3. 粘貼您的CURL代碼。

  4. 很高興。

我測試了這個解決方案這個頁面它的驚人。

+0

這是一個非常好的解決方案,它是針對這個特定問題和其他一組類似問題的適用解決方案。 如果知道我的答案爲否定的原因,我會很高興。 –