2013-04-04 56 views
9

Wie benutzt man Curl auf Rubin auf Schienen? Wie diesesCurl on Ruby on Rails

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

haben Sie eine spezielle requirment cUrl verwenden, coz ich denke, Sie könnten Ruby HTTP-Post-Methode – sameera207

+0

http://stackoverflow.com/questions/3810650/help-me-converting-this-curl-to-a- post-method-in-rails –

+1

überprüfen Sie diese http://stackoverflow.com/questions/11269224/ruby-https-post-with-headers – sameera207

Antwort

22

Gerade falls Sie nicht wissen, es erfordert '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 

Hoffe es wird andere hilft .. :)

0

Die einfachste Beispiel dafür, was Sie zu tun versuchen, ist dies wie diese

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

mit Backticks auszuführen Jedoch gibt diese eine Zeichenfolge, die Sie, wenn Sie zu analysieren, würde wollte etwas über die Antwort vom Server wissen.

Abhängig von Ihrer Situation würde ich Faraday empfehlen. https://github.com/lostisland/faraday

Die Beispiele auf der Website sind geradlinig. Installieren Sie das Juwel, erfordern es, und etwas tun, wie folgt aus:

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} } 

Der Post Körper automatisch in eine URL kodierter Form Zeichenfolge gedreht wird. Aber Sie können auch einfach eine Zeichenfolge posten.

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

nicht initialisierte Konstante TestController :: Faraday Ich installiere erfolgreich das Juwel .. Was ist das Problem? – Lian

+0

Hast du den Edelstein zum Gemfile hinzugefügt? und dann 'bundle install' ausführen, normalerweise bedeutet diese Entschlüsselung von konstanten Fehlern, dass sie nicht geladen wurde. – stuartc

+0

Ja, ich bin damit fertig. – Lian

0

Hier eine Locke zu Rubys ist net/http-Wandler: https://jhawthorn.github.io/curl-to-ruby/

zum Beispiel kann ein curl -v www.google.com Befehl entspricht in Ruby:

require 'net/http' 
require 'uri' 

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

# response.code 
# response.body