点击添加,然后会在Controller文件夹下生成BooksController.cs类文件(图上的Books1Controller是因为我之前已完成编码,已经有了BooksController。。。。),我们打开BooksController类,会看到自动生成了很多的方法(模板的强大力量啊,用起来确实很方便,由于只是演示,就用模板了。。。),代码很多,这里就不贴了,里面的方法大多都对应一种HTTP请求的。
比如下面这个方法:
// GET: api/Books
public IQueryable<Books> GetBooks()
{
return db.Books;
}
我们生成并开始调试,然后浏览器会报错:HTTP Error 403.14 – Forbidden,这时候,我们只需要在那个地址后面加上api/Books就ok,根据不同的浏览器会返回json或xml数据,其他的方法则类似。至此API接口已全部完成。
最后就是客户端的调用了。分别采用了请求XML和JSON的方式,由于HTTP请求以及XML和JSON的解析,前面已经学习过,这里不再赘述,直接贴代码。
请求XML数据:
private async void InitDataXml() { HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Add(new HttpMediaTypeWithQualityHeaderValue("application/xml")); HttpResponseMessage response = await httpClient.GetAsync(new Uri(":64339/api/books")); response.EnsureSuccessStatusCode(); string result = await response.Content.ReadAsStringAsync(); List<Books> bookslist = new List<Books>(); XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(result); IXmlNode xn = xdoc.ChildNodes.Item(0); XmlElement topxe = (XmlElement)xn; XmlNodeList nodelist = xn.ChildNodes; foreach (IXmlNode node in nodelist) { XmlElement xe = (XmlElement)node; XmlNodeList xenodelist = xe.ChildNodes; bookslist.Add(new Books() { book_Name =xenodelist.Item(3).InnerText, book_Author = xenodelist.Item(0).InnerText, book_Isbn = xenodelist.Item(2).InnerText, book_cate =xenodelist.Item(7).InnerText, book_Press = xenodelist.Item(4).InnerText, book_Rressdate = xenodelist.Item(6).InnerText, book_Remain = Convert.ToInt32(xenodelist.Item(5).InnerText) }); } listView.ItemsSource = bookslist; }