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