Ruby on rails 在ruby中将curl转换为openURI?

Ruby on rails 在ruby中将curl转换为openURI?,ruby-on-rails,ruby,curl,open-uri,Ruby On Rails,Ruby,Curl,Open Uri,我有一条像这样的卷曲线: curl https://api.paymill.com/v2.1/checksums -u 'private_user_key' -d 'checksum_type=paypal' -d 'amount=4200' require 'open-uri' open("https://api.paymill.com/v2.1/checksums", http_basic_authentication: ['private_user_key']) 我想将其转换为如下的开

我有一条像这样的卷曲线:

curl https://api.paymill.com/v2.1/checksums -u 'private_user_key' -d 'checksum_type=paypal' -d 'amount=4200'
require 'open-uri'
open("https://api.paymill.com/v2.1/checksums", http_basic_authentication: ['private_user_key'])
我想将其转换为如下的开放uri调用:

curl https://api.paymill.com/v2.1/checksums -u 'private_user_key' -d 'checksum_type=paypal' -d 'amount=4200'
require 'open-uri'
open("https://api.paymill.com/v2.1/checksums", http_basic_authentication: ['private_user_key'])
到目前为止还可以使用,但是如何包括-d数据属性,如-d'checksum_type=paypal'-d'amount=4200'


谢谢,Andreas

我认为您最好直接使用
Net::HTTP
(而不是OpenURI,它只是一个方便的包装器)。这使您能够更好地控制所提出的请求

require 'net/http'
uri = URI("https://api.paymill.com/v2.1/checksums")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.basic_auth("username", "password")
request.set_form_data('checksum_type' => 'paypal', 'amount' => 4200)
response = http.request(request)

我认为您最好直接使用
Net::HTTP
(而不是openuri,它只是一个方便的包装器)。这使您能够更好地控制所提出的请求

require 'net/http'
uri = URI("https://api.paymill.com/v2.1/checksums")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.basic_auth("username", "password")
request.set_form_data('checksum_type' => 'paypal', 'amount' => 4200)
response = http.request(request)

我在这里找到了一些非常好的Net::HTTP示例,包括表单请求:

我在这里找到了一些非常好的Net::HTTP示例,包括表单请求:

我建议您查看一个名为curb的gem。我在过去也遇到过同样的问题-将允许您在您的应用程序中使用完全相同的卷曲线application@phoffer,我尝试用类似数据的属性替换-d:{'checksum_type=paypal','amount=4200'}或d:{..},因为它适用于-u和http_basic_身份验证:。。。但这一切都不适用于任何人me@MageeWorld谢谢,但我尽量避免使用宝石。我建议你看一种叫做路缘的宝石。我在过去也遇到过同样的问题-将允许您在您的应用程序中使用完全相同的卷曲线application@phoffer,我尝试用类似数据的属性替换-d:{'checksum_type=paypal','amount=4200'}或d:{..},因为它适用于-u和http_basic_身份验证:。。。但这一切都不适用于任何人me@MageeWorld谢谢,不过我尽量避免用宝石做这个。