9.0 WebApi
webapi的作用: 一个系统调用另一个系统中的数据时使用
webapi:根据请求报文获取到响应报文数据的数据,根据响应报文获取到流(流的本质是xml),根据流获取到我们需要的数据
webapi:的数据传输的两种格式: 最好用json 因为json传输量小 可以被js解析 ,注意系统默认是xml,所以我们一般需要将其关闭
将webapi的默认的传回数据的格式修改成Json格式
1:修改地址: 在加载webapi的方法中
2:修改的方法:
将xml格式移除,只剩下json格式,此时就会将json格式作为默认格式
config.Formatters.Remove(config.Formatters.XmlFormatter);
1:xml
2:json
注意点:
被访问的系统只需要提供url,然后我们会根据url去调用对应的控制器和action方法
总结: webapi 就是一个系统(网站)访问另一个系统(网站的方法)
1:首先需要创建webapi(注意路由规则(访问webapi的时候需要加上api))
还有所有的webapi中的方法都要加上get(或则post)前缀
2:注意我们首先需要引用需要被访问的网站(被访问的网站只需要向我们提供url就行),我们根据指定的url调用对应的网站的对应的方法
用C#调用webapi的方法: 注意需要引用 using System.Net;
try
{
//1.0 构造一个请求报文对象
WebRequest req = WebRequest.Create("http://localhost:3213/api/Values/GetPig");
req.Method = "Get";
//2.0 发出请求同时获取服务器响应回来的数据对象
WebResponse resp = req.GetResponse();
//3.0 获取响应报文体中流数据,本质上是一个byte[]数组
System.IO.Stream stream = resp.GetResponseStream();
//4.0 将流数据转换成字符串 (此时是一个json格式)
string res = "";
using (System.IO.StreamReader sr = new System.IO.StreamReader(stream))
{
res = sr.ReadToEnd();
}
//5.0 打印
//Response.Write(res);
//5.0 将json字符串反序列化成AA实体
System.Web.Script.Serialization.JavaScriptSerializer jsoner = new System.Web.Script.Serialization.JavaScriptSerializer();
//5.0.1 将json格式反序列化成AA对象
AA model = jsoner.Deserialize<AA>(res);
List<AA> list = new List<AA> { model };
//6.0
GridView1.DataSource = list;
GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
浙公网安备 33010602011771号