HighRise API Создайте человека, которому не хватает пропущенного имени, пока оно там
Я пытаюсь создать человека в highrise, используя API. В ответ появляется сообщение об ошибке "Имя отсутствует. У контактов должно быть имя".
Вот мой код:
let x = """<?xml version="1.0" encoding="UTF-8"?>
<person>
<first-name>name</first-name>
<last-name>last</last-name>
<contact-data>
<email-addresses type="array">
<email-address>
<address>someEmail@gmail.com</address>
</email-address>
</email-addresses>
</contact-data>
<tags type="array">
<tag>
<id type="integer">6154219</id>
<name>sometag</name>
</tag>
</tags>
</person>"""
let req = new RestRequest("/people.xml", Method.POST)
req.AddParameter("Content-Type", "application/xml")
req.AddParameter("application/xml", x, ParameterType.RequestBody)
let res = client.Execute(req)
Ответ возвращает код состояния 422. Не уверен, что я здесь делаю не так?
3 ответа
Оказывается, вы не можете добавлять теги при создании нового человека. Это нужно добавить в отдельный запрос после добавления контакта. Это явно не упоминается в документации, но можно сделать вывод из их примеров.
Я считаю, что это является результатом попытки добавить теги при создании пользователя. Это не совсем понятно из API, но, по моему опыту, ни одна формулировка поля тегов не может быть отправлена компании / человеку и может быть успешной.
В качестве альтернативы, и я не говорю F#, поэтому я не могу быть уверен, но "Content-Type" должен быть в заголовках. Добавляет ли компонент параметра, который вы используете, явно в качестве заголовка?
Поле пропущенного имени появилось у меня до того, как заработал заголовок.
Основываясь на аналогичном вопросе Stackru, похоже, что вы можете получить эту ошибку, когда в вашем запросе есть что-то еще, например, когда отсутствует соответствующий Content-Type
,
Я не знаком с Highrise или Restsharp, чтобы дать определенный ответ, но кажется, что с созданием запроса может быть что-то не так. Просто прочитав твой код, я нашел применение AddParameter
добавить тело несколько неожиданно (хотя это может быть правильно). Похоже, вы могли бы использовать AddBody
вместо этого, поэтому я бы попробовал это.
(Это скорее комментарий, чем правильный ответ, но он слишком длинный, чтобы публиковать его как комментарий!)