2

Следующие действия прекрасно работают и используются в течение довольно длительного времени.десериализация отклика WebApi в список <string>

Uri requestUri = new Uri("http://somewebsite.com/api/Images"); 
var client = new HttpClient(); 
var response = await client.GetAsync(requestUri); 
StorageFolder folder = ApplicationData.Current.LocalFolder; 

if (response.IsSuccessStatusCode) 
{ 
    string responseBody = await response.Content.ReadAsStringAsync(); 
    List<string> myList = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<List<string>>(responseBody)); 

    // more logic here 
} 

Код await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<List<string>>(responseBody)); выглядит менее читабельным и было интересно, если есть упрощенный эквивалент.

Можете ли вы предложить лучшую альтернативу для получения List<string> из HTTP-ответа, поступающего из веб-сайта Api?

ответ

0

Если вы не заботитесь о выполняемой операции в асинхронном режиме, я думаю, что вы могли бы сделать:

var responseBody = client.GetAsync(url).Result 
    .Content.ReadAsStringAsync().Result; 

var myList = JsonConvert.DeserializeObject<List<string>>(responseBody); 

EDIT: К сожалению, это не включает вашу проверку состояния ответа. Я думаю, что это сработало бы:

if (response.IsSuccessStatusCode) 
{ 
    var responseBody = response.Content.ReadAsStringAsync().Result; 
    var myList = JsonConvert.DeserializeObject<List<string>>(responseBody); 
    // ... 
+0

Мне действительно не нравится задача блокировки с **. Результат ** если я смогу его избежать; ** Ожидание ** - это путь. – user2921851

Смежные вопросы