Ответ 1
svick комментарий прав. Задайте тип содержимого в первом параметре AddParameter()
, и вы можете оставить вызов AddHeader()
.
Пока это "правильный" ответ, я объясню, почему у него запутанный метод для этого, что не совсем очевидно.
Предполагаемый способ выполнить это - использовать AddBody()
вместе с RestRequest.RequestFormat
. Пример:
var client = new RestClient();
// client.XmlSerializer = new XmlSerializer(); // default
// client.XmlSerializer = new SuperXmlSerializer(); // can override with any implementaiton of ISerializer
var request = new RestRequest();
request.RequestFormat = DataFormat.Xml;
request.AddBody(objectToSerialize);
Сериализация objectToSerialize
основана на зарегистрированном XmlSerializer
. Если вы используете RequestFormat = DataFormat.Json
, то используется RestClient.JsonSerializer
. Реализации ISerializer
(которые вы можете использовать для переопределения сериализации по умолчанию) объявляют свои собственные типы контента, которые передаются через перегруженную junky AddParameter()
, которую вы используете.
AddParameter(contentType, content, ParameterType.RequestBody)
никогда не предназначалось для вызова напрямую. Он был добавлен в качестве обходного пути для передачи данных из AddBody()
, но затем другие вещи стали зависимыми от него, поэтому он застрял. Это было ужасное решение в ретроспективе, но слишком поздно менять его в строке версии 1xx. Если я когда-нибудь создам другую версию, я сделаю это более очевидным.