0

有効な xml を含む URL がありますが、RestClient でこれを取得する方法がわかりません。文字列をダウンロードして、WebClient で既に行っているように解析できると思いました。

やっている:

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

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

「文字列」は、パブリックなパラメーターなしのコンストラクターを持つ非抽象型でなければならないことについて VS を泣かせます。

実行タスクを参照してください。

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;
        }
    }
}

ライブ タイルに関するすばらしいチュートリアルを提供してくれた Claus Jørgensen に感謝します。

文字列を解析するのを待っているパーサーが既にあるので、文字列をダウンロードしたいだけです:-)

4

1 に答える 1

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;
        }
    }
}
于 2012-03-23T16:07:32.050 に答える