gpt4 book ai didi

ruby - 如何在同一个类中使用 HTTParty 的摘要和基本身份验证?

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:01 26 4
gpt4 key购买 nike

我有以下类执行一些请求:

  • 第一个请求使用摘要授权
  • 第二个请求使用基本身份验证

当我运行第二个请求时出现以下错误:

only one authentication method, :basic_auth or :digest_auth may be used at a time

如何在运行第二个请求之前使 digest_auth 无效?

class Test
include HTTParty
debug_output $stdout
digest_auth 'login', 'pass'

def first_request(href)
self.class.base_uri "SERVER:PORT"
response = self.class.get(href, {:query => {}})
response
end

def second_request(href)
auth = {:username => "USERNAME", :password => "PASSWORD"}
options = { :body => xml_string, :basic_auth => auth }
response = self.class.post('', options)
response
end
end

最佳答案

当您使用 basic_auth 时或 digest_auth , HTTParty 在内部将信息存储在 @default_options 散列中。以下是 basic_auth 的来源:

# File 'lib/httparty.rb', line 102def basic_auth(u, p)  default_options[:basic_auth] = {:username => u, :password => p}end

You can get access to that hash using the default_options method:

# File 'lib/httparty.rb', line 452def default_options #:nodoc:  @default_optionsend

I'd try:

default_options.delete(:basic_auth)

或:

default_options.delete(:digest_auth)

在使用其他身份验证方法之前。

这是未经测试的代码,但看起来是正确的:

class Test
include HTTParty
debug_output $stdout

def first_request(href)
klass = self.class
klass.base_uri "SERVER:PORT"
klass.default_options.delete(:basic_auth)
klass.digest_auth 'login', 'pass'
klass.get(href, {:query => {}})
end

def second_request(href)
klass = self.class
klass.default_options.delete(:digest_auth)
klass.post(
'',
{
:body => xml_string,
:basic_auth => {
:username => "USERNAME",
:password => "PASSWORD"
}
}
)
end
end

关于ruby - 如何在同一个类中使用 HTTParty 的摘要和基本身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com