Net :: HTTP :: Unauthorized - как мне получить заголовок WWW-Authenticate? - PullRequest
0 голосов
/ 08 апреля 2010

Учитывая приведенный ниже код ...

Net::HTTP.start('localhost', 4000) do |http|
    #
    #   usual stuff omitted for clarity
    #
    @response = http.request(req)
end

... если (с хорошим поведением) сервер возвращает ответ 401 (неавторизованный), как мне получить заголовок WWW_Authenticate?

Лучшее решение, которое у меня есть, совсем не хорошо ...

class Net::HTTPUnauthorized
    def get_header(h)
        _return = nil

        target = h.upcase

        self.header.each_header do |k, v|
            if k.upcase == target
                _return = v
                break
            end
        end

        _return
    end
end

Крис

1 Ответ

2 голосов
/ 08 апреля 2010

Один из вариантов - использовать Rack-Client от Halorgium , который оборачивает Net::HTTP с конечной точкой Rack.Затем вы будете взаимодействовать с удаленным сервером, как если бы это было приложение Rack:

response = Rack::Client.get("http://localhost:4000/foo/bar.baz")
response.code
# => 401
response.headers['WWW-Authenticate']
# => 'Basic realm="Control Panel"'
...