How POST binary using Ruby?

Hi,

I've got a script that uses curl, and would like (for educational
purposes mind you) to use ruby instead. This is the curl command that
works:

F="./my_data.xml"
curl 'http://localhost:8080/update' --data-binary @$F -H 'Content-
type:text/xml; charset=utf-8'

I've been messing with Net::Http using something like below, with
variations (Base64.encode64) but nothing works yet. Anyone know the
ruby equivlent to the curl version above?

Thanks!

# NOT WORKING:
my_url = 'http://localhost:8080/update'
data = File.read('my_data.xml')
url = URI.parse(my_url)
post = Net::HTTP::Post.new(url.path)
post.body = data
post.content_type = 'application/x-www-form-urlencoded; charset=utf-8'
  response = Net::HTTP.start(url.host, url.port) do |http|
    http.request(post)
  end
puts response.body

Got it!

data = File.read('my_data.xml')
url = URI.parse('http://localhost:8080/update'\)
http = Net::HTTP.new(url.host, url.port)
response, body = http.post(url.path, data, {'Content-type'=>'text/xml;
charset=utf-8'})

Matt

···

On Sep 11, 9:15 am, goodieboy <goodie...@gmail.com> wrote:

Hi,

I've got a script that uses curl, and would like (for educational
purposes mind you) to use ruby instead. This is the curl command that
works:

F="./my_data.xml"
curl 'http://localhost:8080/update’--data-binary @$F -H 'Content-
type:text/xml; charset=utf-8'

I've been messing with Net::Http using something like below, with
variations (Base64.encode64) but nothing works yet. Anyone know the
ruby equivlent to the curl version above?

Thanks!

# NOT WORKING:
my_url = 'http://localhost:8080/update&#39;
data = File.read('my_data.xml')
url = URI.parse(my_url)
post = Net::HTTP::Post.new(url.path)
post.body = data
post.content_type = 'application/x-www-form-urlencoded; charset=utf-8'
  response = Net::HTTP.start(url.host, url.port) do |http|
    http.request(post)
  end
puts response.body