【发布时间】:2020-11-13 05:15:25
【问题描述】:
尝试使用 curl cmd 时我可以访问 api,但同样无法使用 net/http 访问,
我按照这个链接 Preserving case in HTTP headers with Ruby's Net:HTTP 做了字符串补丁,它在 ruby 2.2.4 上运行良好,
但是最近我们迁移到了 ruby 2.6.5 版本,从那以后我们又遇到了这个问题。
谁能帮帮我。
示例代码
token = JSON.parse(token_id)
request = Net::HTTP::Get.new(uri)
sso_token = token["headers"][0]["value"][0]
request[CaseSensitiveString.new('sso_token')] = sso_token
request["Accept"] = "application/json"
req_options = {
use_ssl: uri.scheme == "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
response.code
response.body
class CaseSensitiveString < String
def downcase
self
end
def capitalize
self
end
结束
【问题讨论】:
-
您能否添加一些代码让我们更好地了解您的设置?
-
嗨@bwalshy 我已经添加了示例代码,请检查一下
-
@anothermh - 它需要 curl lib.dll 来处理 http 请求,请您提供 net/http 对我们有帮助吗
-
正如链接问题中接受的答案所指出的那样,Net::HTTP 没有可靠的长期解决方案来允许这样做。正确的答案是使用不需要额外步骤、丑陋的 hack 或猴子补丁的东西。