【问题标题】:Transform curl to open-uri in ruby?在ruby中将curl转换为open-uri?
【发布时间】:2016-07-08 14:05:04
【问题描述】:

我有这样的卷曲线:

curl https://api.paymill.com/v2.1/checksums -u 'private_user_key' -d 'checksum_type=paypal' -d 'amount=4200'

我想把它转换成这样的 open-uri 调用:

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'?

谢谢,安德烈亚斯

【问题讨论】:

  • 我建议你看看一个叫做遏制的宝石。我过去也遇到过同样的问题 - 将允许您在应用程序中使用完全相同的卷曲线
  • @phoffer,我尝试将 -d 替换为 data: {'checksum_type=paypal', 'amount=4200'} 或 d: {..} 之类的属性,因为它适用于 -u和 http_basic_authentication: ...但这些都不适合我
  • @MageeWorld 谢谢,但我尽量避免为此使用 gem。

标签: ruby-on-rails ruby curl open-uri


【解决方案1】:

我认为你最好直接使用Net::HTTP(而不是open-uri,它只是一个方便的包装器)。这使您可以更好地控制正在发出的请求。

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)

【讨论】:

    【解决方案2】:

    我在这里找到了一些非常好的 Net::HTTP 示例,包括表单请求:http://www.rubyinside.com/nethttp-cheat-sheet-2940.html

    【讨论】:

      猜你喜欢
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多