2014-01-30 3 views
3

У меня есть локон команда, которая работает хорошо, но мне нужно автоматизировать это рубиновый скрипт,локон команда эквивалентен рубин

свертыванию ЦМД:

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) 

Приведенный выше код работает, у меня был закодированный URL-адрес, который я передавал 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}` 

и обратно клещи будут выполнять систему локон

+0

Я ищу, чтобы сделать пост http в рубине вместо того, чтобы сделать системный вызов для завитки – 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 & EASY SOLUTION !!

  1. Скопируйте код CURL.

  2. Перейти к этому page.

  3. Вставьте свой код CURL.

  4. Будьте счастливы.

Я испытал это решение на этой странице, это потрясающе.

+0

Это действительно хорошее решение, его применимое решение для этого конкретного вопроса и другой группы вопросов по similars. Жаль, если вы знаете причину отрицательных голосов за мой ответ. –

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