• 1.1.4 利用HttpClient调用 WebApi


        对于一个.net客户端程序,它可以利用HttpClient来进行Web Api的调用。由于WebA Api的调用本质上就是一次普通的发送请求与接收响应的过程,

    所有HttpClient其实可以作为一般意义上发送HTTP请求的工具。

        在ConsoleApp代表的控制台应用中,我们利用HttpClient来调用以Self Host方式寄宿的Web Api。

        为该项目引用Common, System.Net.Http

    class Program
        {
            static void Main(string[] args)
            {
                Process();
                Console.Read();
            }
    
            private async static void Process()
            {
                //获取当前联系人列表
                HttpClient httpClient = new HttpClient();
                HttpResponseMessage response = await httpClient.GetAsync("http://localhost/selfhost/api/contacts");
                IEnumerable<Contact> contacts = await response.Content.ReadAsAsync<IEnumerable<Contact>>();
                Console.WriteLine("当前联系人列表:");
                ListContacts(contacts);
    
                //添加新的联系人
                Contact contact = new Contact { Name = "王五", PhoneNo = "17712348765", EmailAddress = "wangwuEmali@123.com", Address = "天津" };
                await httpClient.PostAsJsonAsync<Contact>("http://localhost/selfhost/api/contacts", contact);
                Console.WriteLine("添加联系人:王五");
                response = await httpClient.GetAsync("http://localhost/selfhost/api/contacts");
                contacts = await response.Content.ReadAsAsync<IEnumerable<Contact>>();
                ListContacts(contacts);
    
                //修改现有的某个联系人
                response = await httpClient.GetAsync("http://localhost/selfhost/api/contacts/001");
                contact = (await response.Content.ReadAsAsync<IEnumerable<Contact>>()).First();
                contact.Name = "修改过的张三";
                await httpClient.PutAsJsonAsync<Contact>("http://localhost/selfhost/api/contacts", contact);
                Console.WriteLine("修改联系人001的信息");
                response = await httpClient.GetAsync("http://localhost/selfhost/api/contacts");
                contacts = await response.Content.ReadAsAsync<IEnumerable<Contact>>();
                ListContacts(contacts);
    
                //删除现有的某个联系人
                response = await httpClient.DeleteAsync("http://localhost/selfhost/api/contacts/002");
                Console.WriteLine("删除联系人“002”");
                response = await httpClient.GetAsync("http://localhost/selfhost/api/contacts");
                contacts = await response.Content.ReadAsAsync<IEnumerable<Contact>>();
                ListContacts(contacts);
    
            }
    
            private static void ListContacts(IEnumerable<Contact> contacts)
            {
                foreach (Contact item in contacts)
                {
                    Console.WriteLine("{0,-6}{1,-6}{2,-20}{3,-10}", item.ID, item.Name, item.EmailAddress, item.Address);
                    Console.WriteLine();
                }
            }
        }

        效果如下

  • 相关阅读:
    base64 转blob,base64 转文件
    下载附件时防止连点
    windows更新失败
    ValidationError: webpack Dev Server Invalid Options
    导入,导出
    软件的结构
    VueRouter(一)
    根据IP判断所在地区
    phpcms v9 非超级管理员 发布不了内容的解决办法
    VIM 快捷键
  • 原文地址:https://www.cnblogs.com/fenger-VIP/p/6683095.html
Copyright © 2020-2023  润新知