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