2

Ce qui suit fonctionne bien et utilisé pendant un certain temps.WebApi réponse désérialisation dans la liste <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 
} 

Le code await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<List<string>>(responseBody)); semble moins lisible et je me demandais s'il existe un équivalent simplifié.

Pouvez-vous suggérer une meilleure alternative pour obtenir List<string> à partir d'un HTTP Response Contenu venant du web Api?

Répondre

0

Si vous ne se soucient pas de l'opération étant async, je pense que vous pouvez faire:

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

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

EDIT: Désolé, que votre chèque omet d'état de réponse. Je pense que cela fonctionnerait:

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

Je n'aime vraiment pas une tâche de blocage avec **. Résultat ** si je peux l'éviter; ** attendre ** est le chemin à parcourir. – user2921851