如何使用open-uri发出POST请求?
是否可以使用open-uri从Ruby发出POST请求?
不幸的是, open-uri
只支持GET
动词。
您可以下拉一个级别并使用net/http
,或使用rest-open-uri
,它旨在支持POST
和其他动词。 你可以做gem install rest-open-uri
来安装它。
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
它对我有用:)
我也非常推荐rest-client 。 它是编写API客户端的理想基础。
它很简单:
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
我建议使用response.methods - Object.methods
来查看所有可用的方法,例如message
, header,
奖励 :POST / DELETE请求:
puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body puts Net::HTTP.new("httpbin.org").delete("/delete").body