如何在Ruby on Rails中使用curl?像这样
curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'
如何在Ruby on Rails中使用curl?像这样
curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'
如果你不知道的话,需要引入 '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
希望这会对其他人有所帮助.. :)
curl -v www.google.com
命令在Ruby中等效于:require 'net/http'
require 'uri'
uri = URI.parse("http://www.google.com")
response = Net::HTTP.get_response(uri)
# response.code
# response.body
`curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'`
然而,这会返回一个字符串,如果你想知道服务器的回复信息,你需要解析它。
根据您的情况,我建议使用 Faraday。https://github.com/lostisland/faraday
网站上的示例很简单。安装 gem,引用它,然后像这样做:
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} }
帖子正文将自动转换为URL编码的表单字符串。 但您也可以直接发布字符串。
conn.post '/file.json', 'params1[name]=name¶ms2[email]'
bundle install
,通常这种持续出现的错误意味着它还没有被加载。 - stuartc
Net::HTTP
。 - shweta