RestResponse имеет значение NULL для запроса POST с использованием RestSharp

Я делаю запрос POST с помощью RestSharp (на клиенте Windows Phone 7.1). Я отправил строку службе в теле запроса. Похоже, служба успешно вызвана и возвращает правильное значение (целое число), однако объект ответа равен нулю:

client.ExecuteAsync<T>(request, (response) => {
    data = response.Data;  // response is null in debugger
});

не могу понять почему так.


person Aliens    schedule 03.02.2012    source источник
comment
Отслеживали ли вы фактический запрос (используя Fiddler или аналогичный), чтобы убедиться, что фактический запрос был сделан и ответ был возвращен?   -  person Matt Lacey    schedule 03.02.2012


Ответы (2)


<T> не является допустимым значением для этого вызова. Я не уверен, что это даже будет построено там, если вы не завернете его в общий метод.

Кроме того, ответ возвращается в виде обычного текста? Что возвращается Content-Type? Скорее всего, вам следует просто использовать ExecuteAsync(request, callback) без универсального параметра и получить данные из response.Content, который является строкой тела ответа. response.Data предназначен для автоматически десериализованного ответа XML или JSON (или пользовательского), если вы используете перегрузку универсального метода, которая указывает тип для десериализации.

person John Sheehan    schedule 03.02.2012
comment
В RestSharp для WP нет метода Execute. Но я изменил его на client.ExecuteAsync без ‹T›. Объект ответа по-прежнему имеет значение null, и я не могу получить доступ к его свойствам. Веб-служба возвращает целочисленное значение, которое я должен получить из объекта ответа (возможно, через свойство Content, как вы предложили). - person Aliens; 03.02.2012
comment
Если объект ответа имеет значение null, есть ли что-нибудь в ErrorException? - person John Sheehan; 03.02.2012
comment
ErrorException имеет значение null. Я добавил блок try catch, но исключений не происходит. - person Aliens; 03.02.2012

Кажется, это постоянная проблема с асинхронными вызовами RestSharp — для ошибок транспорта HTTP объект ErrorException бесполезен (возвращает null). Проверьте свойство StatusCode, если оно возвращает что-либо, кроме HttpStatusCode.OK. StatusDescription также не очень полезен, поскольку он не соответствует полному сообщению о состоянии из полезной нагрузки ответа сервера.

person psined1    schedule 10.08.2013