Lit*_*ild 8 ruby ruby-on-rails exact-online
我试图从ExactOnlineAPI访问令牌,但文档建议只使用 x-www-form-urlencoded.Ruby on Rails是否有这种编码,如果是这样,我该如何使用它.
x-www-form-urlencoded和之间有什么不同encode_www_form
params = {
:code => "#{code}",
:redirect_uri => '/auth/exact/callback',
:grant_type => "authorization_code",
:client_id => "{CLIENT_ID}",
:client_secret => "CLIENT_SECRET"
}
uri = URI('https://start.exactonline.nl/api/oauth2/token')
#
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
puts "Access Token: "+res.body
Run Code Online (Sandbox Code Playgroud)
Raj*_*Das 10
请求主体由表单的标记定义.在表单标记中有一个名为的属性
enctype,该属性告诉浏览器如何编码表单数据.此属性可以具有多个不同的值.默认值为application/x-www-form-urlencoded,它告诉浏览器对所有值进行编码.
因此,当我们想要发送数据以通过这些数据提交表单时,标题将为application/x-www-form-urlencoded定义的enctype 发送表单的参数
http.set_form_data(param_hash)
Run Code Online (Sandbox Code Playgroud)
为您
params = {
:code => "#{code}",
:redirect_uri => '/auth/exact/callback',
:grant_type => "authorization_code",
:client_id => "{CLIENT_ID}",
:client_secret => "CLIENT_SECRET"
}
uri = URI('https://start.exactonline.nl/api/oauth2/token')
#
Net::HTTP::Get.new(uri.request_uri).set_form_data(params)
Run Code Online (Sandbox Code Playgroud)
或者用于表单提交使用的发布请求 Net::HTTP::Post
并encode_www_form是:
它从给定的枚举生成URL编码的表单数据.
URI.encode_www_form([["name", "ruby"], ["language", "en"]])
#=> "name=ruby&language=en"
Run Code Online (Sandbox Code Playgroud)
在你的情况下
uri.query = URI.encode_www_form(params)
#=> "code=aas22&redirect_uri=...."
Run Code Online (Sandbox Code Playgroud)
更多信息在这里
简单来说,如果你需要 POST 一个 application/www-url-form-encoded 请求:
# prepare the data:
params = [ [ "param1", "value1" ], [ "param2", "value2" ], [ "param3", "value3" ] ]
uri = ( "your_url_goes_here" )
# make your request:
response = Net::HTTP.post_form( uri, params )
if( response.is_a?( Net::HTTPSuccess ) )
# your request was successful
puts "The Response -> #{response.body}"
else
# your request failed
puts "Didn't succeed :("
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9211 次 |
| 最近记录: |