今天来写一下后台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));