Ruby Net::HTTP с использованием SSL

У меня очень простой API, который я хотел бы сделать POST для использования 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 показан запрос, подобный следующему:

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

Как указано выше, я могу сделать тот же запрос через POSTMAN или NodeJS и получить правильный результат.

ПРИМЕЧАНИЕ. Поскольку у меня есть локальная копия API, я могу проверить ее локально, НО это не SSL, а все через http. При локальном запросе все работает просто отлично. Так что из того, что я могу сказать, эта проблема представляет себя только при введении SSL.

Любая помощь будет потрясающей! Спасибо!!

Ruby Version 2.2.1

1 ответ

Проблема была в том, что я не перечислил в своем первоначальном вопросе. API использовал AWS API Gateway и HTTP_PROXY был включен в метод, вызвавший эту странную проблему. После того как я удалил HTTP_PROXY проблема прояснилась и вышеприведенный код сработал!

Другие вопросы по тегам