1

Railsコントローラーを使用してポストリクエストを送信しようとしていますが、コントローラーにuse_ssl = trueを受け入れさせることができないという問題に直面しました。これが私のコードです

require "net/http"
require "uri"

params = {'requestId' => '1', 
  'merchantId' => 'merchantid'
  'version' => '1.0.6', 
  'locale' => 'en_US', 
  'externalUserId' => '1234', 
  'partnerId' => 'partnerid', 
  'emailAddress' => 'test@email.com', 
  'deviceDTO' => "{'id' => '123123213', 'deviceType' => 'samsung'}",
  'timestamp' => Time.now.strftime('%Y-%m-%dT%H:%M:%S.%L%z')
}

url = URI.parse('https://example.com')
http = Net::HTTP::Post.new(url.host)
http.set_form_data(params)
#http.use_ssl = true
#http.verify_mode = OpenSSL::SSL::VERIFY_PEER


res = Net::HTTP.start(url.hostname, url.port) do |h|
  h.request(http)
  h.use_ssl = true
  h.verify_mode = OpenSSL::SSL::VERIFY_NONE
end

エラーは次のとおりです。

NoMethodError: undefined method `use_ssl=' for #<Net::HTTP::Post POST>
NoMethodError: undefined method `verify_mode=' for #<Net::HTTP::Post POST>

現在UPDエラー

Errno::ECONNRESET: Connection reset by peer
4

1 に答える 1

2

use_sslのメソッドでNet::HTTPあり、オブジェクトを作成していNet::HTTP::Postます。

あなたがしたいかもしれません

url = URI.parse('https://example.com/')
http = Net::HTTP.new(url.host, url.port)
if url.scheme == 'https'
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
end
http.post(url.path, params)
于 2012-11-20T08:23:21.157 に答える