Ruby Sinatra создать почтовый запрос
Я создал веб-приложение, и у меня есть одна проблема с созданием почтового запроса к серверу https. Мой код для запроса на получение здесь:
uri = URI('https://test.com/all')
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https',
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
request = Net::HTTP::Get.new uri.request_uri
request.basic_auth 'dt', 'dt'
response = http.request request # Net::HTTPResponse object
return response.body
end
Как создать POST-запрос? Понятия не имею.
3 ответа
Решение
Я взял часть из метода авторизации Google, который использует пост, это может быть проще, но вы можете увидеть, как использовать params, ssl и т. Д.
require 'net/http'
require 'net/https'
require 'uri'
@title = "Google Authetication"
token = params[:code]
client_secret = "***********************"
uri = URI('https://accounts.google.com/o/oauth2/token')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data('code' => token, 'client_id' => @client_id, 'client_secret' => client_secret, 'redirect_uri' => googleauth_url, 'grant_type' => 'authorization_code')
request.content_type = 'application/x-www-form-urlencoded'
response = http.request(request)
response.code
Пример:
uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
puts res.body
Мне удалось это сделать, мой рабочий код:
uri = URI('https://test.com/olololo')
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https',
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
request = Net::HTTP::Post.new uri.request_uri
request.basic_auth 'dt', 'dt'
request.body = res_Data.to_json
response = http.request request
return response.body
end