• WebApi(6) 后台C#调用WebApi


    今天来写一下后台C#代码如何访问webapi 这里使用HttpClient方法访问webapi也是很常用的方法。

    因为我在是webapi项目里直接写的,为了方便就直接读取了当前地址,代码包括 webapi的所有用法【Getstring GetClass GetListClass Post put Delete】。

    代码如下:

                //后台client方式GET提交
                HttpClient myHttpClient = new HttpClient();
                //提交当前地址的webapi
                string url = "http://" + System.Web.HttpContext.Current.Request.Url.Host + ":" + System.Web.HttpContext.Current.Request.Url.Port.ToString();
                myHttpClient.BaseAddress = new Uri(url);
                //GET提交 返回string 
                HttpResponseMessage response = myHttpClient.GetAsync("api/ApiDemo/Get2").Result;
                string result = "";
                if (response.IsSuccessStatusCode)
                {
                    result = response.Content.ReadAsStringAsync().Result;
                }
                //return Content(JsonConvert.SerializeObject(result));
    
                Product product = null;
                //GET提交 返回class
                response = myHttpClient.GetAsync("api/ProductsAPI/GetProduct/1").Result;
                if (response.IsSuccessStatusCode)
                {
                    product = response.Content.ReadAsAsync<Product>().Result;
                }
                //return Content (JsonConvert.SerializeObject(product));
    
                //put 提交 先创建一个和webapi对应的类            
                var content = new FormUrlEncodedContent(new Dictionary<string, string>()
                    {
                        {"Id","2"},
                        {"Name","Name:"+DateTime.Now.ToString() },
                        {"Category","111"},
                        {"Price","1"}
                     });
                response = myHttpClient.PutAsync("api/ProductsAPI/PutProduct/2", content).Result;
                if (response.IsSuccessStatusCode)
                {
                    result = response.Content.ReadAsStringAsync().Result;
                }
    
    
                //post 提交 先创建一个和webapi对应的类
                content = new FormUrlEncodedContent(new Dictionary<string, string>()
                    {
                        {"Id","382accff-57b2-4d6e-ae84-a61e00a3e3b5"},
                        {"Name","Name" },
                        {"Category","111"},
                        {"Price","1"}
                     });
                response = myHttpClient.PostAsync("api/ProductsAPI/PostProduct", content).Result;
                if (response.IsSuccessStatusCode)
                {
                    result = response.Content.ReadAsStringAsync().Result;
                }
                //delete 提交
                response = myHttpClient.DeleteAsync("api/ProductsAPI/DeleteProduct/1").Result;
                if (response.IsSuccessStatusCode)
                {
                    result = response.Content.ReadAsStringAsync().Result;
                }
    
                //GET提交 返回List<class>
                response = myHttpClient.GetAsync("api/ProductsAPI/GetAllProducts").Result;
                List<Product> listproduct = new List<Models.Product>();
                if (response.IsSuccessStatusCode)
                {
                    listproduct = response.Content.ReadAsAsync<List<Product>>().Result;
                }
                return Content(JsonConvert.SerializeObject(listproduct));
    

      

  • 相关阅读:
    C++ 面向对象编程3 封装 继承 多态
    C++ 面向对象编程2
    C++ 面向对象编程1
    C++开发环境和基础语法
    RTOS概述
    STM32F4 窗口看门狗(WWDG)
    STM32F407 独立看门狗 (IWDG)
    DHT11温湿度传感器
    Ubuntu20.04安装、配置、卸载QT5.9.9与QT creator以及第一个编写QT程序
    Linux,Ubuntu20.04LTS环境下安装JDK1.8和IDEA2021
  • 原文地址:https://www.cnblogs.com/cxd1008/p/6640015.html
Copyright © 2020-2023  润新知