Search code examples
ruby-on-railsrubysslnet-http

Ruby Net::HTTP using SSL


I have a very simple API, that I would like to make a POST to using ruby and NOT using a GEM just the built in libraries net/http, uri, and openssl if needed.

Anyway, I am using the code below to make a very simple POST request but am getting some VERY strange results and was hoping someone else has seen this.

I have also tested the same request below in POSTMAN and NodeJS and BOTH work as expected, the only one I can not get to work is 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

The result is something I have not seen before: I am getting the header key twice... So the log to the API shows a query like this:

SELECT * FROM device where key = '1234567, 1234567' LIMIT ...

As stated above I can make the same request via POSTMAN or NodeJS and get the correct result.

NOTE: Because I have a local copy of the API I can test locally BUT it's not SSL it's all over http. When making the request locally it works just fine. So from what I can tell this issue only presents it self when SSL is introduced.

Any help would be amazing! Thanks!!

Ruby Version 2.2.1


Solution

  • The issue was with something I did not list in my initial question. The API was using AWS API Gateway, and HTTP_PROXY was enabled on the method causing this strange issue. After I removed HTTP_PROXY the issue cleared up and the above code worked!