Curl on Ruby on Rails

落花浮王杯 提交于 2019-11-27 16:30:14

问题


how to use curl on ruby on rails? Like this one

curl -d 'params1[name]=name&params2[email]' 'http://mydomain.com/file.json'

回答1:


Just in case you don't know, it requires 'net/http'

require 'net/http'

uri = URI.parse("http://example.org")

# Shortcut
#response = Net::HTTP.post_form(uri, {"user[name]" => "testusername", "user[email]" => "testemail@yahoo.com"})

# Full control
http = Net::HTTP.new(uri.host, uri.port)

request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data({"user[name]" => "testusername", "user[email]" => "testemail@yahoo.com"})

response = http.request(request)
render :json => response.body

Hope it'll helps others.. :)




回答2:


Here is a curl to ruby's net/http converter: https://jhawthorn.github.io/curl-to-ruby/

For instance, a curl -v www.google.com command is equivalent in Ruby to:

require 'net/http'
require 'uri'

uri = URI.parse("http://www.google.com")
response = Net::HTTP.get_response(uri)

# response.code
# response.body



回答3:


The most basic example of what you are trying to do is to execute this with backticks like this

`curl -d 'params1[name]=name&params2[email]' 'http://mydomain.com/file.json'`

However this returns a string, which you would have to parse if you wanted to know anything about the reply from the server.

Depending on your situation I would recommend using Faraday. https://github.com/lostisland/faraday

The examples on the site are straight forward. Install the gem, require it, and do something like this:

conn = Faraday.new(:url => 'http://mydomain.com') do |faraday|
  faraday.request  :url_encoded             # form-encode POST params
  faraday.response :logger                  # log requests to STDOUT
  faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
end

conn.post '/file.json', { :params1 => {:name => 'name'}, :params2 => {:email => nil} }

The post body will automatically be turned into a url encoded form string. But you can just post a string as well.

conn.post '/file.json', 'params1[name]=name&params2[email]'


来源:https://stackoverflow.com/questions/15804425/curl-on-ruby-on-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!