curl --request POST \
--url https://example.com/token/grant \
--header 'password: password' \
--header 'username: user' \
--data '{"app_key":"my_app_key","app_secret":"my_app_secret"}'
我正在尝试与其余客户端的上述curl请求获取等效的红宝石代码。
我尝试过:
auth = 'Basic ' + Base64.encode64( "#{AA['user_name']}:#{AA['password']}" ).chomp
response = RestClient.post'https://example.com/token/grant', {"app_key":"my_app_key","app_secret":"my_app_secret"}, { 'Authorization' => auth , :accept => :json, 'Content-Type': 'application/json' }
response = JSON.parse(response)
它不起作用。
第二次尝试:
RestClient.post 'https://example.com/token/grant', {"app_key":"my_app_key","app_secret":"my_app_secret"}.to_json, {'username': 'username', 'password': 'password', content_type: 'application/json'}
也没有工作。 我检查了用户名和密码是否正确。
它显示标题中缺少用户名。
谢谢。
答案 0 :(得分:1)
根据描述,似乎当使用RestClient运行请求时,标头是操作无法处理标头(用户名,因为它是标头哈希中的第一个键)。
我已经在自定义代码上执行了以下命令,并且可以正常工作。
RestClient.post 'https://example.com/token/grant', {"app_key":"my_app_key","app_secret":"my_app_secret"}.to_json, {username: 'username', password: 'password', content_type: 'application/json'}
注意:我刚刚更新了在标题哈希中传递的标题键的表示形式。
答案 1 :(得分:0)
我已经尝试过使用Rest client。它不起作用。然后我也尝试了Faraday,Net HTTP无效。
然后我尝试使用curb。可以。
require 'curb'
request_path= 'https://example.com/token/grant'
payload = {
app_key: 'app_key',
app_secret: 'app_secret'
}
http = Curl.post(request_path, payload.to_json) do |http|
http.headers['username'] = 'user_name'
http.headers['password'] = 'password'
http.headers['Content-Type'] = 'application/json'
end
JSON.parse(http.body_str)