Тайм-аут Httpi на PUT, но работает POST - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь заставить PUT работать с httpi. Я использую curb (curl) в качестве адаптера с согласованием gss (мне нужно использовать токен Kerberos). Я могу GET article_to_update и POST новых статей, используя почти тот же код (удалите article_to_update из URL и измените put на post). С кодом ниже я получаю 408 ошибок: «Тайм-аут сервера в ожидании HTTP-запроса от клиента». Я также попробовал пустое тело и получил те же результаты. Любые идеи о том, как заставить это работать или отлаживать дальше?

Также приветствуются альтернативные (не рельсовые) решения для реализаций GET / PUT / POST с аутентификацией Kerberos. Это для REST API, но я не видел, если / как гем 1013 * поддерживает Kerberos.

require 'curb'
require 'httpi'
require 'json'

HTTPI.adapter = :curb
url = URI.escape('https://myserver.com/rest/article/article_to_update')
request = HTTPI::Request.new(url: url, open_timeout: 30)
request.headers['Content-Type'] = 'application/json'
request.headers['Accept'] = 'application/json'
request.auth.gssnegotiate
request.body = JSON.dump(
    name: 'discovery',
    owner: 'greg'
)
response = HTTPI.put(request)
...