我试图从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
Rajarshi Das.. 10
请求主体由表单的标记定义.在表单标记中有一个名为的属性
enctype
,该属性告诉浏览器如何编码表单数据.此属性可以具有多个不同的值.默认值为application/x-www-form-urlencoded,它告诉浏览器对所有值进行编码.
因此,当我们想要发送数据以通过这些数据提交表单时,标题将为application/x-www-form-urlencoded
定义的enctype 发送表单的参数
http.set_form_data(param_hash)
为您
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)
或者用于表单提交使用的发布请求 Net::HTTP::Post
并encode_www_form
是:
它从给定的枚举生成URL编码的表单数据.
URI.encode_www_form([["name", "ruby"], ["language", "en"]]) #=> "name=ruby&language=en"
在你的情况下
uri.query = URI.encode_www_form(params) #=> "code=aas22&redirect_uri=...."
更多信息在这里
请求主体由表单的标记定义.在表单标记中有一个名为的属性
enctype
,该属性告诉浏览器如何编码表单数据.此属性可以具有多个不同的值.默认值为application/x-www-form-urlencoded,它告诉浏览器对所有值进行编码.
因此,当我们想要发送数据以通过这些数据提交表单时,标题将为application/x-www-form-urlencoded
定义的enctype 发送表单的参数
http.set_form_data(param_hash)
为您
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)
或者用于表单提交使用的发布请求 Net::HTTP::Post
并encode_www_form
是:
它从给定的枚举生成URL编码的表单数据.
URI.encode_www_form([["name", "ruby"], ["language", "en"]]) #=> "name=ruby&language=en"
在你的情况下
uri.query = URI.encode_www_form(params) #=> "code=aas22&redirect_uri=...."
更多信息在这里