亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

webApi如何調用

發布時間:2020-09-22 14:27:32 來源:億速云 閱讀:185 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關webApi如何調用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

webapi怎么調用?如何使用程序調用webApi接口?

在C#中,傳統調用HTTP接口一般有兩種辦法:

1.WebRequest/WebResponse組合的方法調用

2.WebClient類進行調用。

第一種方法抽象程度較低,使用較為繁瑣;而WebClient主要面向了WEB網頁場景,在模擬Web操作時使用較為方便,但用在RestFul場景下卻比較麻煩,在Web API發布的同時,.NET提供了兩個程序集:System.Net.Http和System.Net.Http.Formatting。這兩個程序集中最核心的類是HttpClient。

在.NET4.5中帶有這兩個程序集,而.NET4需要到Nuget里下載Microsoft.Net.Http和Microsoft.AspNet.WebApi.Client這兩個包才能使用這個類,更低的.NET版本就只能表示遺憾了只能用WebRequest/WebResponse或者WebClient來調用這些API了。

在使用中,System.Net.Http這個程序集提供了HttpClient類以及相關的HTTP調用,而System.Net.Http.Formatting提供了一些針對HttpClient的幫助擴展,更好地支持了內容協商、Content創建等功能。

下面我就和大家一起寫一下這個例子:

public class Person

    {

        public long Id { get; set; }        public string Name { get; set; } 

        public int Age { get; set; } 

        public string Sex { get; set; } 

        public override string ToString()

        {            return $"Id={Id} Name={Name} Age={Age} Sex={Sex}";

        }

    }
class Program
   {
       static void Main(string[] args)
       {
           var client = new HttpClient();
           //基本的API URL
           client.BaseAddress = new Uri("http://localhost:22658/");
           //默認希望響應使用Json序列化(內容協商機制,我接受json格式的數據)
           client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
           //運行client接收程序
           Run(client);
           Console.ReadLine();
       }
       //client接收處理(都是異步的處理)
       static async void Run(HttpClient client)
       {
           //post 請求插入數據
           var result = await AddPerson(client);
           Console.WriteLine($"添加結果:{result}"); //添加結果:true
           
           //get 獲取數據
           var person = await GetPerson(client);
           //查詢結果:Id=1 Name=test Age=10 Sex=F
           Console.WriteLine($"查詢結果:{person}"); 
           //put 更新數據
           result = await PutPerson(client);
           //更新結果:true
           Console.WriteLine($"更新結果:{result}"); 
           //delete 刪除數據
           result = await DeletePerson(client);
           //刪除結果:true
           Console.WriteLine($"刪除結果:{result}"); 
       }
       
       //post
       static async Task<bool> AddPerson(HttpClient client)
       {
           //向Person發送POST請求,Body使用Json進行序列化
           return await client.PostAsJsonAsync("api/Person", new Person() { Age = 10, Id = 1, Name = "test", Sex = "F" }) 
                               //返回請求是否執行成功,即HTTP Code是否為2XX
                               .ContinueWith(x => x.Result.IsSuccessStatusCode);  
       }
       
       //get
       static async Task<Person> GetPerson(HttpClient client)
       {
           //向Person發送GET請求
           return await await client.GetAsync("api/Person/1") 
           //獲取返回Body,并根據返回的Content-Type自動匹配格式化器反序列化Body內容為對象
                                    .ContinueWith(x => x.Result.Content.ReadAsAsync<Person>(                             
                   new List<MediaTypeFormatter>() {new JsonMediaTypeFormatter()/*這是Json的格式化器*/
                                                   ,new XmlMediaTypeFormatter()/*這是XML的格式化器*/}));
       }
       
       //put
       static async Task<bool> PutPerson(HttpClient client)
       {
           //向Person發送PUT請求,Body使用Json進行序列化
           return await client.PutAsJsonAsync("api/Person/1", new Person() { Age = 10, Id = 1, Name = "test1Change", Sex = "F" }) 
                               .ContinueWith(x => x.Result.IsSuccessStatusCode);  //返回請求是否執行成功,即HTTP Code是否為2XX
       }
       //delete
       static async Task<bool> DeletePerson(HttpClient client)
       {
           return await client.DeleteAsync("api/Person/1") //向Person發送DELETE請求
                              .ContinueWith(x => x.Result.IsSuccessStatusCode); //返回請求是否執行成功,即HTTP Code是否為2XX
       }
}

這就完成了這組API的調用,是不是非常簡單方便?HTTPClient使用全異步的方法,并且他有良好的擴展性。

關于webApi如何調用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

托里县| 本溪市| 青铜峡市| 陆川县| 关岭| 萨迦县| 蓬莱市| 巴林右旗| 镇远县| 张家口市| 夏邑县| 孟津县| 潜山县| 马边| 万全县| 孝感市| 洪雅县| 郧西县| 蓝田县| 榆社县| 如东县| 遂昌县| 凤台县| 高邑县| 道真| 隆安县| 安远县| 静安区| 伊春市| 乌什县| 临颍县| 芒康县| 莒南县| 乌拉特前旗| 新干县| 崇阳县| 芮城县| 瑞安市| 楚雄市| 涞源县| 沂水县|