如何在rails上的ruby上使用curl?像这个
curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'
如何在rails上的ruby上使用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
希望它会帮助别人.. :)
这是 ruby 的 net/http 转换器的 curl:https ://jhawthorn.github.io/curl-to-ruby/
例如,一个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'`
但是,这会返回一个字符串,如果您想了解有关服务器回复的任何信息,则必须对其进行解析。
根据您的情况,我建议使用法拉第。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]'