Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby Net::使用SSL的HTTP_Ruby On Rails_Ruby_Ssl_Net Http - Fatal编程技术网

Ruby on rails Ruby Net::使用SSL的HTTP

Ruby on rails Ruby Net::使用SSL的HTTP,ruby-on-rails,ruby,ssl,net-http,Ruby On Rails,Ruby,Ssl,Net Http,我有一个非常简单的API,我想发布一篇关于使用ruby而不是使用GEM的文章,只要内置库net/http,uri,以及openssl(如果需要) 无论如何,我正在使用下面的代码来做一个非常简单的POST请求,但是我得到了一些非常奇怪的结果,并且希望其他人已经看到了这一点 我也在POSTMAN和NodeJS中测试了相同的请求,两个都按预期工作,我唯一不能工作的是Ruby require 'uri' require 'net/http' require 'openssl' url = URI("h

我有一个非常简单的API,我想发布一篇关于使用ruby而不是使用GEM的文章,只要内置库
net/http
uri
,以及
openssl
(如果需要)

无论如何,我正在使用下面的代码来做一个非常简单的POST请求,但是我得到了一些非常奇怪的结果,并且希望其他人已经看到了这一点

我也在POSTMAN和NodeJS中测试了相同的请求,两个都按预期工作,我唯一不能工作的是Ruby

require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://somesite.dev/devices")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["key"] = '1234567'

response = http.request(request)
puts response.read_body
结果是我以前从未见过的:我得到了两次标题
key
。。。因此,API的日志显示如下查询:

从设备中选择*键='1234567,1234567'限制…

如上所述,我可以通过邮递员或NodeJS提出同样的请求,并得到正确的结果

注意:因为我有API的本地副本,所以我可以在本地测试,但它不是SSL,而是通过http进行测试。在本地发出请求时,它可以正常工作。因此,从我所知道的情况来看,这个问题只在引入SSL时才会出现

任何帮助都将是惊人的!谢谢


Ruby版本
2.2.1

问题在于我在最初的问题中没有列出的东西。API正在使用AWS API网关,并且在导致此奇怪问题的方法上启用了
HTTP\u PROXY
。在我删除
HTTP\u PROXY
之后,问题就解决了,上面的代码也起了作用

除非您正在创建一个新协议,否则我建议使用一个已建立的协议,而不是Net::HTTP。重新发明一个轮子可能会浪费很多时间,造成很多挫折。使用哪一个由您决定。SSL不会导致这个问题,它只是一个管道。如果没有更多的代码,我们无法真正诊断问题,我们只能猜测;也许服务器端API在处理数据的SSL端时有问题。阅读“”和链接页面以及“”会有所帮助。API已经过检查,我可以用POSTMAN或其他在NodeJS和Curl中测试过的编程语言发出相同的请求,它们都能正常工作。我已经尝试使用REST客户机并得到相同的问题,所以我想现在退出GEM,看看我能弄清楚到底发生了什么。嗯,考虑到这种情况,SSL管道被Rails和各种其他客户端测试得非常严重,所以如果发生了重复的数据,或者数据被破坏了,这可能会发生在所有地方,并且代码所涉及的任何系统都会出现问题。我们需要能够根据您问题中的代码复制问题,因此我们需要更多信息。您的Ruby版本已过时,这将影响Ruby及其OpenSSL。也许更新它会有所帮助。