Невозможно добавить тело в RestSharp RestRequest с помощью перечислений

Я использую RestSharp в проекте ASP .NET MVC 2. Попытка создать RestRequest (используя метод POST) и добавить два значения перечисления (мой тип перечисления -- OrderStatusFlags) в тело запроса -- используя встроенный RestSharp XmlSerializer:

var request = new RestRequest("orders/{vendorID}/{number}", Method.POST);
request.AddBody(previousOrderStatus);
request.AddBody(newOrderStatus);

Но после вызова метода AddBody в параметрах запроса видно только пустое, но без значения. И при вызове метода действия MVC возникает ошибка:

Словарь параметров содержит нулевую запись для параметра «previousStatus» не допускающего значение NULL типа «OrderStatusFlags» для метода «RestResponse PostOrderStatus (Int32, System.String, OrderStatusFlags, OrderStatusFlags)» в «OrdersResourceEndpoint». Необязательный параметр должен быть ссылочным типом, типом, допускающим значение NULL, или быть объявленным как необязательный параметр. Имя параметра: параметры

Перечисление выглядит так:

public enum OrderStatusFlags : long
{
    Pending,
    Confirmed,
    ...
}

Встречается ли у кого-нибудь похожая ситуация?


person Polina    schedule 05.10.2010    source источник


Ответы (1)


Пара вопросов здесь. Во-первых, вы можете позвонить AddBody() только один раз, иначе последний вызов будет иметь приоритет. AddBody() также предназначен только для отправки XML в качестве тела запроса. Какова необходимая схема XML, которую вам нужно отправить на этот URL-адрес? Можете ли вы опубликовать образец XML, который вы пытаетесь сгенерировать?

Я думаю, что более вероятно, что вы на самом деле хотите использовать AddParameter() для добавления некоторых параметров POST, поскольку это гораздо более распространено, чем тело запроса XML.

person John Sheehan    schedule 05.10.2010
comment
Большое спасибо за развернутый ответ! Вы совершенно правы - для этой задачи лучше использовать параметры! - person Polina; 06.10.2010