使用用户名和密码的其他客户帖子

时间:2018-08-26 09:15:14

标签: ruby curl ruby-on-rails-5 rest-client

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'}

也没有工作。 我检查了用户名和密码是否正确。

  

它显示标题中缺少用户名。

谢谢。

2 个答案:

答案 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)