https://www.cnblogs.com/cxd1008/p/6640015.html
今天来写一下后台C#代码如何访问webapi 这里使用HttpClient方法访问webapi也是很常用的方法。
因为我在是webapi项目里直接写的,为了方便就直接读取了当前地址,代码包括 webapi的所有用法【Getstring GetClass GetListClass Post put Delete】。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
//后台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));
|
/// <summary> /// url请求 /// </summary> /// <param name="type"></param> /// <param name="paramData"></param> /// <returns></returns> private static string WebRequest(string method, string type, string paramData) { string apiUrl = "http://" + ConfigHelper.GetBaseUrl("url") + "/Session"; apiUrl = apiUrl.EndsWith("/") ? apiUrl : apiUrl + "/"; string postUrl = string.Empty; if (type == "Get" || type == "Delete") { postUrl = apiUrl + method + "?" + paramData; } else { postUrl = apiUrl + method; } LogWriter.ToDebug(postUrl); string ret = string.Empty; byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(paramData); System.Net.HttpWebRequest webReq = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(new Uri(postUrl)); webReq.Method = type; switch (type) { case "Post": { webReq.ContentLength = byteArray.Length; webReq.ContentType = "application/json"; System.IO.Stream newStream = webReq.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length); //写入参数 newStream.Close(); } break; case "Put": { webReq.ContentLength = byteArray.Length; webReq.ContentType = "application/x-www-form-urlencoded"; System.IO.Stream newStream = webReq.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length); //写入参数 newStream.Close(); } break; } using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)webReq.GetResponse()) { System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8); ret = sr.ReadToEnd(); sr.Close(); } return ret; }
本文为博主原创文章,欢迎转载,但转载须注在明显位置注明【博客地址】和【原文地址】,否则将追究法律责任。http://www.cnblogs.com/cxd1008
今天来写一下后台C#代码如何访问webapi 这里使用HttpClient方法访问webapi也是很常用的方法。
因为我在是webapi项目里直接写的,为了方便就直接读取了当前地址,代码包括 webapi的所有用法【Getstring GetClass GetListClass Post put Delete】。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
//后台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));
|
/// <summary> /// url请求 /// </summary> /// <param name="type"></param> /// <param name="paramData"></param> /// <returns></returns> private static string WebRequest(string method, string type, string paramData) { string apiUrl = "http://" + ConfigHelper.GetBaseUrl("url") + "/Session"; apiUrl = apiUrl.EndsWith("/") ? apiUrl : apiUrl + "/"; string postUrl = string.Empty; if (type == "Get" || type == "Delete") { postUrl = apiUrl + method + "?" + paramData; } else { postUrl = apiUrl + method; } LogWriter.ToDebug(postUrl); string ret = string.Empty; byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(paramData); System.Net.HttpWebRequest webReq = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(new Uri(postUrl)); webReq.Method = type; switch (type) { case "Post": { webReq.ContentLength = byteArray.Length; webReq.ContentType = "application/json"; System.IO.Stream newStream = webReq.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length); //写入参数 newStream.Close(); } break; case "Put": { webReq.ContentLength = byteArray.Length; webReq.ContentType = "application/x-www-form-urlencoded"; System.IO.Stream newStream = webReq.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length); //写入参数 newStream.Close(); } break; } using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)webReq.GetResponse()) { System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8); ret = sr.ReadToEnd(); sr.Close(); } return ret; }