comment utiliser curl sur Ruby on rails? Comme celui-ci
curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'
Juste au cas où vous ne le sauriez pas, il faut 'net/http'
require 'net/http'
uri = URI.parse("http://example.org")
# Shortcut
#response = Net::HTTP.post_form(uri, {"user[name]" => "testusername", "user[email]" => "[email protected]"})
# 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]" => "[email protected]"})
response = http.request(request)
render :json => response.body
J'espère que ça va aider les autres .. :)
Voici un lien vers le convertisseur net/http de Ruby: https://jhawthorn.github.io/curl-to-Ruby/
Par exemple, une commande curl -v www.google.com
équivaut en Ruby à:
require 'net/http'
require 'uri'
uri = URI.parse("http://www.google.com")
response = Net::HTTP.get_response(uri)
# response.code
# response.body
L'exemple le plus élémentaire de ce que vous essayez de faire est d'exécuter ceci avec des backticks comme celui-ci.
`curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'`
Cependant, cela retourne une chaîne que vous devrez analyser si vous voulez tout savoir sur la réponse du serveur.
Selon votre situation, je vous recommanderais d'utiliser Faraday. https://github.com/lostisland/faraday
Les exemples sur le site sont simples. Installez la gemme, exigez-la et faites quelque chose comme ceci:
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} }
Le corps de la publication sera automatiquement transformé en une chaîne de formulaire codée en URL. Mais vous pouvez simplement poster une chaîne aussi.
conn.post '/file.json', 'params1[name]=name¶ms2[email]'