Reputation: 2393
I created web-application and I have one problem with creating post request to https server. My code for get request is here:
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
How to create POST request? I don't have any idea.
Upvotes: 3
Views: 1183
Reputation: 42182
I took a piece from a google authorisation method which uses post, it can be simpler but so you can see how to use params, ssl etc
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
Upvotes: 2
Reputation: 2393
I managed to do it, my working code:
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
Upvotes: 0
Reputation: 4440
Example:
uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
puts res.body
Upvotes: 0