.net core mvc项目实现扫描图书条形码调用isbn接口获取图书信息

最近在学习C#编程,做了个图书管理系统的小demo,有个需求就是可以更加快速地将图书入库而不需要手动输入。因为刚刚开始学不熟悉 ,最后功能实现了,实现过程可能不规范。
效果图:


t1.jpg
t2.jpg

下面开始说步骤:

1.前端代码

//上传条形码

//将后台处理的数据显示在前端界面,并可以传回数据库
返回列表

2.controller里对应方法代码

这里使用了Ding.QRCode.ZXing类库将图书的条形码解析得到图书的ISBN号,之后借助网上找的isbn接口获取图书信息。

Ding.QRCode.ZXing
ZXing.jpg
 [HttpPost]
        public IActionResult SearchISBN(string image)
        {

            //image = "G:/file/picture/" + image;
            Image img = Image.FromFile(image);
            Bitmap b = new Bitmap(img);

            //该类名称为BarcodeReader,可以读二维码和条形码
            var zzb = new ZXing.ZKWeb.BarcodeReader();
            zzb.Options = new DecodingOptions
            {
                CharacterSet = "UTF-8"
            };
            Result r = zzb.Decode(b);
            string resultText = r.Text;
            b.Dispose();
            img.Dispose();

            string serviceUrl = string.Format("{0}/{1}", "http://book.feelyou.top/isbn", resultText);
            //创建Web访问对  象
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
            //通过Web访问对象获取响应内容
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
            //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
            StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
            //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
            string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
            
            reader.Close();
            myResponse.Close();
            //return returnXml;
            BookCreateViewModel book = new BookCreateViewModel();
            JObject obj = JObject.Parse(returnXml);
            book.BookName = obj["title"].ToString();
            book.ISBN = obj["isbn"].ToString();
            book.Introduce = obj["book_intro"].ToString();
            book.Author= obj["abstract"].ToString().Split('/')[0];
            book.Press= obj["abstract"].ToString().Split('/')[1];
            book.PressDate = Convert.ToDateTime(obj["abstract"].ToString().Split('/')[2]);
            string str = obj["abstract"].ToString().Split('/')[3];
            str = Regex.Replace(str, @"[^\d.\d]", "");
            if (Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"))
            {
                decimal result = decimal.Parse(str);
                book.Price = result;
            }

            return View(book);
        }

你可能感兴趣的:(.net core mvc项目实现扫描图书条形码调用isbn接口获取图书信息)