Ответ 1
Тело запроса является типом параметра. Чтобы добавить один, вы можете сделать один из этих...
req.AddBody(body);
req.AddBody(body, xmlNamespace);
req.AddParameter("text/xml", body, ParameterType.RequestBody);
req.AddParameter("application/json", body, ParameterType.RequestBody);
Чтобы получить параметр body, вы можете искать элементы в коллекции req.Parameters
где Type
равен ParameterType.RequestBody
.
Смотрите код для класса RestRequest
здесь.
Вот что должны сказать документы RestSharp на ParameterType.RequestBody
:
Если этот параметр установлен, его значение будет отправлено как тело запроса. Имя параметра игнорируется, равно как и дополнительные параметры RequestBody - только 1 принимается.
RequestBody работает только с запросами POST или PUT, поскольку только они фактически отправляют тело.
Если у вас также есть параметры GetOrPost, они перезапишут RequestBody - RestSharp не будет объединять их, а вместо этого выбрасывает параметр RequestBody.
Для чтения/обновления параметра body на лету вы можете попробовать:
var body = req.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody);
if (body != null)
{
Console.WriteLine("CurrentBody={0}", body.Value);
body.Value = "NewBodyValue";
}
Или, если это не удалось, создайте новую копию объекта RestRequest
с другим телом.