Jos*_*osh 6 ruby rest rest-client
我已经创建了一个基本的身份验证密钥,现在我只是想利用它.我尝试了一些不同的变体,但似乎没有一个在请求标题中显示授权.
$auth = 'Basic cmFtZXNoQHVzYW1hLmNvbTpyYW1lc2h1JEBtcA=='
@response = resource.post('Authorization' => $auth)
nor
@response = resource.post(:authorization => $auth)
nor
@response = resource.post(:Authorization => $auth)
nor
@response = resource.post(:content_type => :json, :accept => :json, :headers => { 'Authorization:' => $auth })
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有在rdoc中找到很多可以帮助我解决这个问题的信息.有没有人有使用Rest Client gem添加auth标头的经验?
Nei*_*ter 15
对于Basic Auth,您应该能够在创建资源时以纯文本格式设置用户和密码:
resource = RestClient::Resource.new( 'http://example.com', 'user', 'password' )
Run Code Online (Sandbox Code Playgroud)
但是,如果您确实需要根据请求直接设置标头:
@response = resource.post( request_payload, :Authorization => $auth )
Run Code Online (Sandbox Code Playgroud)
应该管用.如果没有,那么您可能设置$auth不正确.但是,我认为您只是错过了添加请求有效负载,因此它使用了您为该必需参数提供的哈希,而根本没有设置任何标头.
这是一个完整且有效的示例get(我没有Basic Auth和POST提供的测试服务)
require 'rest-client'
require 'base64'
$auth = 'Basic ' + Base64.encode64( 'user:passwd' ).chomp
$url = 'http://httpbin.org/basic-auth/user/passwd'
@resource = RestClient::Resource.new( $url )
@response = @resource.get( :Authorization => $auth )
# => "{\n \"authenticated\": true,\n \"user\": \"user\"\n}"
Run Code Online (Sandbox Code Playgroud)
注意:虽然这有效,但我建议您使用第一种也是最简单的方法向构造函数提供用户和密码,除非您有充分的理由不这样做.
| 归档时间: |
|
| 查看次数: |
23372 次 |
| 最近记录: |