aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/net/http.rb14
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)]