diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-02 01:46:45 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-02 01:46:45 +0000 |
commit | f5bdc774fdb0dbb9f23d3b314db5177f01d80714 (patch) | |
tree | 2d3f13aa372e69f954971dd42cf82a053399307c /lib/net | |
parent | 1cdcd40ec876c67d05c0bc424aa8d9f6ad85ea84 (diff) | |
download | ruby-f5bdc774fdb0dbb9f23d3b314db5177f01d80714.tar.gz |
* lib/net/http.rb (Net::HTTP#set_form_data):
use URI.encode_www_form for application/x-www-form-urlencoded.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/net')
-rw-r--r-- | lib/net/http.rb | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/lib/net/http.rb b/lib/net/http.rb index 55b731d058..4d475b14f7 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -1784,22 +1784,14 @@ module Net #:nodoc: # http.set_form_data({"q" => "ruby", "lang" => "en"}, ';') # def set_form_data(params, sep = '&') - self.body = params.map {|k, v| encode_kvpair(k, v) }.flatten.join(sep) + query = URI.encode_www_form(params) + query.gsub!(/&/, sep) if sep != '&' + self.body = query self.content_type = 'application/x-www-form-urlencoded' end alias form_data= set_form_data - def encode_kvpair(k, vs) - Array(vs).map {|v| "#{urlencode(k.to_s)}=#{urlencode(v.to_s)}" } - end - private :encode_kvpair - - def urlencode(str) - str.dup.force_encoding('ASCII-8BIT').gsub(/[^a-zA-Z0-9_\.\-]/){'%%%02x' % $&.ord} - end - private :urlencode - # Set the Authorization: header for "Basic" authorization. def basic_auth(account, password) @header['authorization'] = [basic_encode(account, password)] |