Skip to content
instance method

Net::HTTPHeader#form_data=

(::Hash[untyped, untyped] params, ?::String sep) -> void
form_data=(params, sep = '&')

Alias of #set_form_data

Sets the request body to a URL-encoded string derived from argument params, and sets request header field 'Content-Type' to 'application/x-www-form-urlencoded'.

The resulting request is suitable for HTTP request POST or PUT.

Argument params must be suitable for use as argument enum to URI.encode_www_form.

With only argument params given, sets the body to a URL-encoded string with the default separator '&':

Example
req = Net::HTTP::Post.new('example.com')

req.set_form_data(q: 'ruby', lang: 'en')
req.body            # => "q=ruby&lang=en"
req['Content-Type'] # => "application/x-www-form-urlencoded"

req.set_form_data([['q', 'ruby'], ['lang', 'en']])
req.body            # => "q=ruby&lang=en"

req.set_form_data(q: ['ruby', 'perl'], lang: 'en')
req.body            # => "q=ruby&q=perl&lang=en"

req.set_form_data([['q', 'ruby'], ['q', 'perl'], ['lang', 'en']])
req.body            # => "q=ruby&q=perl&lang=en"

With string argument sep also given, uses that string as the separator:

Example
req.set_form_data({q: 'ruby', lang: 'en'}, '|')
req.body # => "q=ruby|lang=en"

Net::HTTPHeader#form_data= is an alias for Net::HTTPHeader#set_form_data.

See also #set_form_data #fetch #get_fields #each_value also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0