* lib/net/http.rb (Net::HTTP.post): new convenience method to send a POST request.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2016-11-05 14:39:06 +00:00
Родитель 8ec6fcb2f6
Коммит 88243c5303
4 изменённых файлов: 42 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Sat Nov 5 23:30:41 2016 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/http.rb (Net::HTTP.post): new convenience method to send
a POST request.
Sat Nov 5 23:03:54 2016 NARUSE, Yui <naruse@ruby-lang.org> Sat Nov 5 23:03:54 2016 NARUSE, Yui <naruse@ruby-lang.org>
* lib/net/http.rb (transport_request): other than HTTPContinue * lib/net/http.rb (transport_request): other than HTTPContinue

3
NEWS
Просмотреть файл

@ -217,6 +217,9 @@ with all sufficient information, see the ChangeLog file or Redmine
* Don't allow , as a separator [Bug #12791] * Don't allow , as a separator [Bug #12791]
* Net::HTTP
* New method: Net::HTTP.post [Feature #12375]
=== Compatibility issues (excluding feature bug fixes) === Compatibility issues (excluding feature bug fixes)
* Array#sum and Enumerable#sum are implemented. [Feature #12217] * Array#sum and Enumerable#sum are implemented. [Feature #12217]

Просмотреть файл

@ -489,6 +489,24 @@ module Net #:nodoc:
end end
end end
# Posts data to the specified URI object.
#
# Example:
#
# require 'net/http'
# require 'uri'
#
# Net::HTTP.post URI('http://www.example.com/api/search'),
# { "q" => "ruby", "max" => "50" }.to_json,
# "Content-Type" => "application/json"
#
def HTTP.post(url, data, header = nil)
start(url.hostname, url.port,
:use_ssl => url.scheme == 'https' ) {|http|
http.post(url.path, data, header)
}
end
# Posts HTML form data to the specified URI object. # Posts HTML form data to the specified URI object.
# The form data must be provided as a Hash mapping from String to String. # The form data must be provided as a Hash mapping from String to String.
# Example: # Example:

Просмотреть файл

@ -384,6 +384,22 @@ module TestNetHTTP_version_1_1_methods
end end
end end
def test_s_post
url = "http://#{config('host')}:#{config('port')}/"
res = Net::HTTP.post(
URI.parse(url),
"a=x")
assert_equal "application/x-www-form-urlencoded", res["Content-Type"]
assert_equal "a=x", res.body
res = Net::HTTP.post(
URI.parse(url),
"hello world",
"Content-Type" => "text/plain; charset=US-ASCII")
assert_equal "text/plain; charset=US-ASCII", res["Content-Type"]
assert_equal "hello world", res.body
end
def test_s_post_form def test_s_post_form
url = "http://#{config('host')}:#{config('port')}/" url = "http://#{config('host')}:#{config('port')}/"
res = Net::HTTP.post_form( res = Net::HTTP.post_form(