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
проблема прояснилась и вышеприведенный код сработал!