aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-02 01:46:45 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-02 01:46:45 +0000
commitf5bdc774fdb0dbb9f23d3b314db5177f01d80714 (patch)
tree2d3f13aa372e69f954971dd42cf82a053399307c
parent1cdcd40ec876c67d05c0bc424aa8d9f6ad85ea84 (diff)
downloadruby-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
-rw-r--r--ChangeLog5
-rw-r--r--lib/net/http.rb14
2 files changed, 8 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 211d04e04e..7bde009e42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Dec 2 10:39:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#set_form_data):
+ use URI.encode_www_form for application/x-www-form-urlencoded.
+
Thu Dec 2 10:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
* ext/extmk.rb: remove $makeflags.defined?, it should be $mflags.
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)]