Curl on Ruby on Rails

前端 未结 3 1046
无人及你
无人及你 2020-12-15 22:05

how to use curl on ruby on rails? Like this one

curl -d \'params1[name]=name¶ms2[email]\' \'http://mydomain.com/file.json\'
相关标签:
3条回答
  • 2020-12-15 22:46

    Just in case you don't know, it requires '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
    

    Hope it'll helps others.. :)

    0 讨论(0)
  • 2020-12-15 22:52

    The most basic example of what you are trying to do is to execute this with backticks like this

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

    However this returns a string, which you would have to parse if you wanted to know anything about the reply from the server.

    Depending on your situation I would recommend using Faraday. https://github.com/lostisland/faraday

    The examples on the site are straight forward. Install the gem, require it, and do something like this:

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

    The post body will automatically be turned into a url encoded form string. But you can just post a string as well.

    conn.post '/file.json', 'params1[name]=name&params2[email]'
    
    0 讨论(0)
  • 2020-12-15 22:56

    Here is a curl to ruby's net/http converter: https://jhawthorn.github.io/curl-to-ruby/

    For instance, a curl -v www.google.com command is equivalent in Ruby to:

    require 'net/http'
    require 'uri'
    
    uri = URI.parse("http://www.google.com")
    response = Net::HTTP.get_response(uri)
    
    # response.code
    # response.body
    
    0 讨论(0)
提交回复
热议问题