How do I make a POST request with open-uri?

后端 未结 4 1751
一向
一向 2020-12-08 07:27

Is it possible to make a POST request from Ruby with open-uri?

相关标签:
4条回答
  • 2020-12-08 07:43

    I'd also really recommend rest-client. It's a great base for writing an API client.

    0 讨论(0)
  • 2020-12-08 07:53
    require 'open-uri'
    require 'net/http'
    params = {'param1' => 'value1', 'param2' => 'value2'}
    url = URI.parse('http://thewebsite.com/thepath')
    resp, data = Net::HTTP.post_form(url, params)
    puts resp.inspect
    puts data.inspect
    

    It worked for me :)

    0 讨论(0)
  • 2020-12-08 07:54

    Unfortunately open-uri only supports the GET verb.

    You can either drop down a level and use net/http, or use rest-open-uri, which was designed to support POST and other verbs. You can do gem install rest-open-uri to install it.

    0 讨论(0)
  • 2020-12-08 08:03

    As simple as it gets:

    require 'open-uri'
    require 'net/http'
    
    response = Net::HTTP.post_form(URI.parse("https://httpbin.org/post"), { a: 1 })
    
    puts response.code
    puts response.message
    puts response.body
    

    I recommend using response.methods - Object.methods to see all the available methods, e.g. message, header,

    Bonus: POST / DELETE requests:

    puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body
    puts Net::HTTP.new("httpbin.org").delete("/delete").body
    
    0 讨论(0)
提交回复
热议问题