我是 open-uri 的新手,并尝试在 ruby on rails 中使用 open-uri 设置传出 IP 地址。我用这篇文章作为开始的参考。我正在从 PHP 移植一个应用程序,我可以在 curl_setopt 中使用 CURLOPT_INTERFACE。在 Rails 中使用 open-uri 的最佳方法是什么?(从控制器执行此操作 - 而不是命令行。)
如果没有办法做到这一点 - 关于 open-uri 替代方案的任何建议?我的目标是接收和解析 JSON 数据。
我是 open-uri 的新手,并尝试在 ruby on rails 中使用 open-uri 设置传出 IP 地址。我用这篇文章作为开始的参考。我正在从 PHP 移植一个应用程序,我可以在 curl_setopt 中使用 CURLOPT_INTERFACE。在 Rails 中使用 open-uri 的最佳方法是什么?(从控制器执行此操作 - 而不是命令行。)
如果没有办法做到这一点 - 关于 open-uri 替代方案的任何建议?我的目标是接收和解析 JSON 数据。
我从您的问题中了解到,您想从特定 IP 访问另一台服务器,这表明您有一个具有几个地址的服务器。
我可以建议您尝试直接执行 curl 并做您想做的事情或使用包装器。
看起来 open-uri 不能做到这一点。但有了net/https
它相当容易。
require 'net/https'
require 'json'
uri = URI('https://jsonvat.com/')
http = Net::HTTP.new(uri.host, uri.port)
http.local_host = '1.2.3.4'
http.use_ssl = true
request = Net::HTTP::Get.new('/')
request.content_type = 'application/json'
request.initialize_http_header('Content-Type' => 'application/json')
response = http.request(request)
json = JSON.parse(response.body)
可能您不需要 Rails 控制器中的“require”行。您可以使用该行指定传出 IP 地址http.local_host
。