zoukankan      html  css  js  c++  java
  • Web API的几种调用方式

    示例是调用谷歌短网址的API.

    1. HttpClient方式:

    public static async void DoAsyncPost()
            {
                DateTime dateBegin = DateTime.Now;
    
                string url = @"https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyAK2z18";
                var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
    
                using (var http = new HttpClient(handler))
                {
                    RequestModel model = new RequestModel
                    {
                        longUrl = "https://msdn.microsoft.com/zh-CN/library/system.net.http.httpclient(VS.110).aspx"
                    };
    
                    string data = SimpleJson.SerializeObject(model);
                    HttpContent content = new StringContent(data);
    
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    var response = await http.PostAsync(url, content);
    
                    response.EnsureSuccessStatusCode();
    
                    var result = await response.Content.ReadAsStringAsync();
    
                    ResponseModel responseModel = (ResponseModel)SimpleJson.DeserializeObject(result.ToString(), typeof(ResponseModel));
    
                    http.Dispose();
                    response.Dispose();
    
                    DateTime dateEnd = DateTime.Now;
                    TimeSpan span = dateEnd.Subtract(dateBegin);
                    Console.WriteLine("HttpClient Time Span is:{0}", span.Milliseconds);
    
                    Console.WriteLine(result);
                }
            }
    View Code

    2. WebClient方式:

    public static void WebClientPost()
            {
                DateTime dateBegin = DateTime.Now;
    
                Encoding encoding = Encoding.UTF8;
                string result = string.Empty;
                string uri = @"https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyAK2z18";
                WebClient wc = new WebClient();
    
                RequestModel model = new RequestModel
                {
                    longUrl = "https://msdn.microsoft.com/zh-CN/library/system.net.http.httpclient(VS.110).aspx"
                };
    
                string paramStr = SimpleJson.SerializeObject(model);
                //string paramStr = "{"longUrl": "https://msdn.microsoft.com/zh-CN/library/system.net.http.httpclient(VS.110).aspx"}";
                wc.Headers.Add("Content-Type", "application/json");
                byte[] postData = encoding.GetBytes(paramStr);
    
    
                byte[] responseData = wc.UploadData(uri, "POST", postData);
                result = encoding.GetString(responseData);
    
                ResponseModel responseModel = (ResponseModel)SimpleJson.DeserializeObject(result, typeof(ResponseModel));
    
                DateTime dateEnd = DateTime.Now;
                TimeSpan span = dateEnd.Subtract(dateBegin);
                Console.WriteLine("WebClient Time Span is:{0}", span.Milliseconds);
    
                Console.WriteLine(result);
            }
    View Code

    3. RestClient方式:,要用NuGet安装RestSharp

    public static void RestClientPost()
            {
                DateTime dateBegin = DateTime.Now;
    
                var client = new RestClient("https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyAK2z18");
                var request = new RestRequest(Method.POST);
                request.AddHeader("cache-control", "no-cache");
                request.AddHeader("content-type", "application/json");
    
                RequestModel model = new RequestModel
                {
                    longUrl = "https://msdn.microsoft.com/zh-CN/library/system.net.http.httpclient(VS.110).aspx"
                };
    
                string paramStr = SimpleJson.SerializeObject(model);
                request.AddParameter("application/json", paramStr, ParameterType.RequestBody);
                //request.AddParameter("application/json", "{"longUrl": "https://msdn.microsoft.com/zh-CN/library/system.net.http.httpclient(VS.110).aspx"}", ParameterType.RequestBody);
                IRestResponse response = client.Execute(request);
    
                ResponseModel responseModel = (ResponseModel)SimpleJson.DeserializeObject(response.Content, typeof(ResponseModel));
    
                DateTime dateEnd = DateTime.Now;
                TimeSpan span = dateEnd.Subtract(dateBegin);
                Console.WriteLine("RestClient Time Span is:{0}", span.Milliseconds);
    
                Console.WriteLine(response.Content);
            }
    View Code

    4. HttpWebRequest方式:

    public static void HttpWebRequestPost()
            {
                DateTime dateBegin = DateTime.Now;
                string url = @"https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyAK2z18";
                string contentType = "application/json";
    
                RequestModel model = new RequestModel
                {
                    longUrl = "https://msdn.microsoft.com/zh-CN/library/system.net.http.httpclient(VS.110).aspx"
                };
    
                string body = SimpleJson.SerializeObject(model);
    
                //string body = "{"longUrl": "https://msdn.microsoft.com/zh-CN/library/system.net.http.httpclient(VS.110).aspx"}";
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    
                httpWebRequest.ContentType = contentType;
                httpWebRequest.Headers.Add("cache-control", "no-cache");
                httpWebRequest.Method = "POST";
                httpWebRequest.Timeout = 20000;
    
                byte[] btBodys = Encoding.UTF8.GetBytes(body);
                httpWebRequest.ContentLength = btBodys.Length;
                httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
    
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
                string responseContent = streamReader.ReadToEnd();
    
                httpWebResponse.Close();
                streamReader.Close();
                httpWebRequest.Abort();
                httpWebResponse.Close();
    
                ResponseModel responseModel = (ResponseModel)SimpleJson.DeserializeObject(responseContent, typeof(ResponseModel));
    
                DateTime dateEnd = DateTime.Now;
                TimeSpan span = dateEnd.Subtract(dateBegin);
                Console.WriteLine("HttpWebResponse Time Span is:{0}", span.Milliseconds);
    
                Console.WriteLine(responseContent);
            }
    View Code
  • 相关阅读:
    sqlite错误 Abort due to constraint violation column id is not unique id没开启自动增长
    字符串转为日期类型
    XPTable 一行添加数据 如果想添加多行 可以使用for循环
    在逮捕异常的时候 可以获取e.MESSAGE里面的信息 然后判断是什么异常
    C# 加载图片image (C#)Image.FromFile 方法会锁住文件的原因及可能的解决方法
    计算两个时间的前后 时间戳
    用C#语言写的多线程演示程序:两个线程,可以开始,可以暂停,可以恢复,可以清除。
    sqlite插入日期时候 出现18991230 0:00:00
    datagridview绑定dataset的时候 需要这一句
    WinForm 子线程修改主线程(UI线程)Control 【Z】
  • 原文地址:https://www.cnblogs.com/ucos/p/5682221.html
Copyright © 2011-2022 走看看