• MSDN给出的HttpClient使用示例


     1 using System;
     2 using System.Json;
     3 using System.Net.Http;
     4 
     5 namespace WorldBankSample
     6 {
     7     /// <summary>
     8     /// Sample download list of countries from the World Bank Data sources at http://data.worldbank.org/
     9     /// </summary>
    10     class Program
    11     {
    12         static string _address = "http://api.worldbank.org/countries?format=json";
    13 
    14         static void Main(string[] args)
    15         {
    16             // Create an HttpClient instance
    17             HttpClient client = new HttpClient();
    18 
    19             // Send a request asynchronously continue when complete
    20             client.GetAsync(_address).ContinueWith(
    21                 (requestTask) =>
    22                 {
    23                     // Get HTTP response from completed task.
    24                     HttpResponseMessage response = requestTask.Result;
    25 
    26                     // Check that response was successful or throw exception
    27                     response.EnsureSuccessStatusCode();
    28 
    29                     // Read response asynchronously as JsonValue and write out top facts for each country
    30                     response.Content.ReadAsAsync<JsonArray>().ContinueWith(
    31                         (readTask) =>
    32                         {
    33                             Console.WriteLine("First 50 countries listed by The World Bank...");
    34                             foreach (var country in readTask.Result[1])
    35                             {
    36                                 Console.WriteLine("   {0}, Country Code: {1}, Capital: {2}, Latitude: {3}, Longitude: {4}",
    37                                     country.Value["name"],
    38                                     country.Value["iso2Code"],
    39                                     country.Value["capitalCity"],
    40                                     country.Value["latitude"],
    41                                     country.Value["longitude"]);
    42                             }
    43                         });
    44                 });
    45 
    46             Console.WriteLine("Hit ENTER to exit...");
    47             Console.ReadLine();
    48         }
    49     }
    50 }

    其中涉及了异步的操作,可以在以后的工作中加以借鉴。

    注释:

    ContinueWith是Task对象的一个方法。ContinueWith接受一个参数,这个参数是Action<T>,而Action<T>是委托,指向一个有一个参数、无返回值的方法。当然参数的类型是由T给出的。具体的来说,这里ContinueWith的参数类型是Action<Task>,且这个Task类型的参数是自动传递的。例子里给出了两个匿名方法来实现委托,都无返回值,参数是Task类型,参数由ContinueWith前面方法返回的Task自动传入。

  • 相关阅读:
    Neutron LBaaS Service(2)—— Neutron Services Insertion Model
    Gevent工作原理(转)
    异步IO/协程/数据库/队列/缓存(转)
    IO多路复用(转)
    pytz库时区的坑(转)
    Python3.0的新特性(原创)
    Dockerfile 中的 CMD 与 ENTRYPOINT(转)
    RESTful及API设计(原创)
    RESTful服务最佳实践(转)
    Flask restful源码分析(原创)
  • 原文地址:https://www.cnblogs.com/shuada/p/2945664.html
Copyright © 2020-2023  润新知