将 `Authorization Bearer` 哈希添加到 Net::HTTP 发布请求 (Ruby)

tim*_*xyz 4 ruby curl net-http

如何添加Authorization Bearer到 POST 请求中Net::HTTP

我只能在文档中找到“基本身份验证”的帮助。

req.basic_auth 'user', 'pass'
Run Code Online (Sandbox Code Playgroud)

来源:https : //docs.ruby-lang.org/en/2.0.0/Net/HTTP.html#class-Net :: HTTP-label-Basic+Authentication

我正在尝试复制一个看起来像的卷曲:

> curl 'http://localhost:8080/places' -d '{"_json":[{"uuid":"0514b...",
> "name":"Athens"}]}' -X POST -H 'Content-Type: application/json' -H
> 'Authorization: Bearer eyJ0eXAiO...'
Run Code Online (Sandbox Code Playgroud)

目前我已经到了:

require 'net/http'
require 'net/https'
require 'uri'

uri = URI('http://localhost:8080/places')

res = Net::HTTP.post_form(uri, '_json' => [{'uuid': '0514b...', 'name':'Athens'}])
Run Code Online (Sandbox Code Playgroud)

但是我在弄清楚如何添加Authentication: Bearer...零件时遇到了麻烦。

有任何人对此有经验吗?

Alo*_*ain 7

我不认为您可以使用该post_form方法添加自定义标题。您可以使用 post 方法添加它。试试下面的代码:

uri = URI("http://localhost:8080/places")
params = [{'uuid': '0514b...', 'name':'Athens'}]
headers = {
    'Authorization'=>'Bearer foobar',
    'Content-Type' =>'application/json',
    'Accept'=>'application/json'
}

http = Net::HTTP.new(uri.host, uri.port)
response = http.post(uri.path, params.to_json, headers)
Run Code Online (Sandbox Code Playgroud)

  • 不要将冒号放在“Bearer”之后 (2认同)