2012-03-23 2 views
0

У меня есть url, который содержит действительный xml, но не уверен, как я мог бы получить это с RestClient. Я думал, что могу просто загрузить строку, а затем проанализировать ее, как и я, уже с помощью WebClient.Как загрузить XML с RestClient?

Выполнение:

 public static Task<String> GetLatestForecast(string url) 
     { 
      var client = new RestClient(url); 
      var request = new RestRequest(); 

      return client.ExecuteTask<String>(request); 
     } 

Делает VS плакать о том, что «строка» должна быть не абстрактный тип с конструктором публичного без параметров.

См executetask:

namespace RestSharp 
{ 
    public static class RestSharpEx 
    { 
     public static Task<T> ExecuteTask<T>(this RestClient client, RestRequest request) 
      where T : new() 
     { 
      var tcs = new TaskCompletionSource<T>(TaskCreationOptions.AttachedToParent); 

      client.ExecuteAsync<T>(request, (handle, response) => 
      { 
       if (response.Data != null) 
        tcs.TrySetResult(response.Data); 
       else 
        tcs.TrySetException(response.ErrorException); 
      }); 

      return tcs.Task; 
     } 
    } 
} 

Благодаря Клаус Йоргенсен кстати для удивительного учебника по живой плитке!

Я просто хочу, чтобы загрузить строку, как у меня уже есть анализатор ждет его, чтобы разобрать его :-)

ответ

1

Если все, что вы хотите, это строка, просто использовать этот подход вместо:

namespace RestSharp 
{ 
    public static class RestSharpEx 
    { 
     public static Task<string> ExecuteTask(this RestClient client, RestRequest request) 
     { 
      var tcs = new TaskCompletionSource<string>(TaskCreationOptions.AttachedToParent); 

      client.ExecuteAsync(request, response => 
      { 
       if (response.ErrorException != null) 
        tcs.TrySetException(response.ErrorException); 
       else 
        tcs.TrySetResult(response.Content); 
      }); 

      return tcs.Task; 
     } 
    } 
}