cách sử dụng curl trên ruby trên đường ray? Như thế này mộtCuộn tròn trên Ruby on Rails
curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'
cách sử dụng curl trên ruby trên đường ray? Như thế này mộtCuộn tròn trên Ruby on Rails
curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'
Chỉ trong trường hợp bạn không biết, nó đòi hỏi '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
Hy vọng nó sẽ giúp những người khác .. :)
Ví dụ cơ bản nhất về những gì bạn đang cố gắng làm là để thực hiện điều này với backticks như thế này
`curl -d 'params1[name]=name¶ms2[email]' 'http://mydomain.com/file.json'`
Tuy nhiên này trả về một chuỗi, mà bạn sẽ phải phân tích nếu bạn muốn biết bất cứ điều gì về câu trả lời từ máy chủ.
Tùy thuộc vào tình huống của bạn, tôi khuyên bạn nên sử dụng Faraday. https://github.com/lostisland/faraday
Các ví dụ trên trang web là thẳng về phía trước. Cài đặt đá quý, yêu cầu nó và làm một cái gì đó như thế này:
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} }
Thân bài sẽ tự động được chuyển thành chuỗi biểu mẫu được mã hóa url. Nhưng bạn cũng có thể đăng một chuỗi.
conn.post '/file.json', 'params1[name]=name¶ms2[email]'
Đây là một curl để của ruby chuyển đổi net/http: https://jhawthorn.github.io/curl-to-ruby/
Ví dụ, một lệnh curl -v www.google.com
là tương đương trong Ruby:
require 'net/http'
require 'uri'
uri = URI.parse("http://www.google.com")
response = Net::HTTP.get_response(uri)
# response.code
# response.body
do u có một yêu cầu đặc biệt để sử dụng cUrl, coz tôi nghĩ rằng bạn có thể sử dụng phương pháp bài đăng HTTP ruby – sameera207
http://stackoverflow.com/questions/3810650/help-me-converting-this-curl-to-a- post-method-in-rails –
kiểm tra http://stackoverflow.com/questions/11269224/ruby-https-post-with-headers – sameera207