Я использую ruby и typhoeus-gem для загрузки контента на страницы XWiki через его RESTful API. Это работает отлично. Но когда дело доходит до загрузки тегов, я борюсь с пробелами. Добавление разделенных запятыми тегов через графический интерфейс, например «с пробелами, другой тег», приведет к появлению двух тегов: «с пробелами» и «другого тега». Это то, что я хочу, но это не работает с API. В приведенных выше примерах будет пять тегов, разделенных пробелами.
- имея
- Космос
- персонажи
- Другой
- ярлык
Документация API описывает, как добавить вкладку на страницу. В нем говорится, что в случае «application/x-www-form-urlencoded» используется имя поля «tag». Если я использую этот тип поля, можно загрузить только один тег. Повторение этого приведет к перезаписи предыдущего тега(ов). Поэтому я попробовал «теги» в качестве типа поля, и он работает для загрузки нескольких тегов. Но все же проблема с интервалом возникает, как описано выше.
Вот рубиновый код, который я использую:
url = mainpage_url + "/tags"
tags = "having space characters, another tag"
# HTTP PUT request
request = Typhoeus::Request.new(
url,
ssl_verifypeer: false,
method: :put,
userpwd: "#{username}:#{password}",
headers: {'Content-Type'=> "application/x-www-form-urlencoded;charset=UTF-8"},
body: {tags: tags}
)
# Handling HTTP errors
request.on_complete do |response|
if response.success?
#$log.info("Tags uploaded.")
elsif response.timed_out?
$log.error("Time out: Tags not uploaded.")
elsif response.code == 0
$log.fatal("Could not get http response while uploading Tags. #{response.return_message}")
else
$log.fatal("HTTP request failed while uploading Tags. #{response.code.to_s}")
end
end
request.run
response = request.response
puts response.body
Я уже пробовал:
- Замените пробелы тегов на «+», «%20» и «\s».
- Используйте text/plain и application/xml в качестве типа мультимедиа
Я думаю, что application/xml может быть решением. Я безуспешно пробовал разные xml-строки. Может быть, у вас есть подсказка для меня.