11

I have a curl command that works well, but I need to automate this in a ruby script,

curl cmd:

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

I wrote the following code:

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)

The above code is working, I had a encoded url that I was passing to URI.escape, that made me post this question about bad response. Foud the issue and fixed it :)

1
  • I believe this answer delivers what you're asking for. Commented Nov 4, 2015 at 0:34

3 Answers 3

31

THE BEST & EASY SOLUTION!!

  1. Copy your CURL code.

  2. Go to this page.

  3. Paste your CURL code.

  4. Be happy.

I tested this solution this page its amazing.

Sign up to request clarification or add additional context in comments.

2 Comments

This is a really good solution, its a applicable solution for this especific question and other group of similars questions. Ill be happy if know the reason for negative votes for my answer.
Note: Does not work with all curl arguments. No -F for example.
9

you can execute the curl command directly from ruby

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}`

and the back ticks will execute the system curl

3 Comments

I am looking to do a http post in ruby instead of making to do a system call for curl
curl is platform dependent. also, you shouldn't suggest command line solutions when the language itself has a solution
That's an absolute and much like everything else in programming its entirely dependent on context and what you are trying to do.
6

You can use 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")

1 Comment

use this documentation to find the equivalents of the parameters you need rubydoc.info/github/taf2/curb/Curl/Easy

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.