Начал работу над Ruby неделю назад. Написание API для подключения к очереди сообщений RabbitMQ. Командная строка для добавления нового пользователя работает.Ruby API (RabbitMQ create user)
$ локон -i -u гость: гость -H "Content-Type: применение/JSON" -XPUT -d '{ "пароль": "PWD", "метки": "администратор"}' http://localhost:15672/api/users/username
Мне нужно сделать этот запрос Http Put от Ruby. Следующий мой код: Защиту test_add_user
uri = URI.parse('http://localhost:15672/api/users/karthik/')
uri.to_s
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Put.new(uri.path)
request.basic_auth 'guest', 'guest'
request['Content-Type'] = 'application/json'
request['Accept'] = 'application/json'
request.set_form_data({'password' => 'secret', 'tags' => 'management'})
http.start do |http|
res = http.request(request)
puts res
end
конец
Это результат я получаю
o.test_add_user
#<Net::HTTPUnsupportedMediaType:0x007fd7fb6fe1d8>
=> nil
ли СМИ тип исключения связаны с Content-Type? Только применение/json разрешено
Должен ли я использовать что-либо наподобие to_json? Если да, то где его использовать? Заранее спасибо.
С уважением Karthik
Вы не правы '=> nil' будучи' res'. 'puts' возвращает' nil', но 'res' equals' # 'означает, что ошибка, которую вы получаете, связана с неподдерживаемым типом носителя. –
ptd
Спасибо за разъяснение. Я ожидал, что число скажет 403 или 415. – Karthik
Я подозреваю, что set_form_data не передает JSON. Вместо 'request.set_form_data()' use 'request.body = '{" password ":" pwd "," tags ":" administrator "}'' (строка с JSON внутри) и посмотреть, работает ли это. –