2008-10-28 17 views

Trả lời

29

Thật không may open-uri chỉ hỗ trợ động từ GET.

Bạn có thể thả xuống một cấp độ và sử dụng net/http hoặc sử dụng rest-open-uri, được thiết kế để hỗ trợ POST và các động từ khác. Bạn có thể làm gem install rest-open-uri để cài đặt.

10

Tôi cũng thực sự khuyên bạn nên rest-client. Đây là cơ sở tuyệt vời để viết ứng dụng khách API.

+1

Các liên kết bây giờ là: https://github.com/rest-client/rest-client –

12
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 

Nó làm việc cho tôi :)

+6

-1 này không được sử dụng OpenURI để xử lý kết nối, nó sử dụng Net :: HTTP. Trong ví dụ này, OpenURI chỉ được sử dụng để tải mô-đun URI. –

+0

Ngoài ra bạn đã khai báo 'params' sau đó tham chiếu' truy vấn ' – KomodoDave

+0

không quan trọng nếu nó đang sử dụng hay không. nếu mở-uri không thể làm điều đó, câu trả lời này sẽ giúp rất nhiều người. không có cách nào để downvote câu trả lời này – mask8

1

Đơn giản như nó được:

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 

tôi khuyên bạn nên sử dụng response.methods - Object.methods để xem tất cả các phương pháp có sẵn, ví dụ message, header,

Bonus: POST/DELETE yêu cầu:

puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body 
puts Net::HTTP.new("httpbin.org").delete("/delete").body 
Các vấn đề liên quan