Скручивание с использованием Ruby
-
11-12-2019 - |
Вопрос
Я пытаюсь использовать Curl с SPNEGO для согласования аутентификации через Ruby.
Я попробовал несколько библиотек, но, похоже, у httpi есть способ сделать это через адаптер ограничения, например по этой ссылке:
https://gist.github.com/3179054#comments
Мне было интересно, есть ли способ отправить данные JSON как часть «данных» моего завитка вместо файла, как указано в ссылке.(Я имею в виду опцию Curl -d)
Мой локон выглядит так:
локон -X POST -d "{"id":"12341234","fieldsRequested":["title","state","comComponent"]}" -H >"Принять:приложение/json" -H "Тип контента:приложение/json" --negotiate -u :>https://abcd.com/find/it
Решение
Чтобы отправить данные JSON с помощью HTTPI/curb, просто установите строку JSON в качестве тела запроса следующим образом:
require 'httpi'
require 'curb'
require 'json'
# ...
req.body = {"id"=>"12341234","fieldsRequested"=>["title","state","component"]}.to_json
# Then set your custom headers
req.headers = {"Accept" => "application/json", "Content-Type" => "application/json"}
Также не включайте multipart_form_post
вариант, поскольку многочастный POST не требуется:
req.auth.gssnegotiate
resp = HTTPI.post req do |http|
http.use_ssl
end