我能够访问API时,尝试wit curl cmd,但同样无法访问与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
结束
2条答案
按热度按时间41ik7eoe1#
抱歉,我需要修补net/http,因为我们有一个大型的现有项目,它的工作与下面的代码为ruby2.5及以上
jobtbby32#
现在在Ruby 3.0.6中遇到了这个问题。查看Net::HTTP::Header代码,我发现在头上执行了
split
(https://github.com/wycats/net-http/blob/master/lib/net2/http/header.rb#LL177C13-L177C13)。因此,CaseSensitiveString
现在应该实现一个split
方法,生成一个CaseSensitiveString
数组: