0

Rút trích dữ liệu Tỉ giá hối đoái của ngân hàng Vietcombank bằng ASP.NET Core

 Thiết kế Website với ASP. NET Core rầm rộ, với nhiều lợi ích được mô tả ở đây: https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcore-2.1

Cụ thể Ngân Hàng Vietcombank có công bố Tỉ giá hối đoái dưới dạng XML trên Website. Chúng ta có thể rút trích dữ liệu từ đây về để phục vụ cho các vấn đề khác (tra cứu tỉ giá, kết hợp du lịch)

Cụ thể các bạn vào website của Ngân Hàng: https://www.vietcombank.com.vn/

Kéo xuống dưới cùng Website, nhìn vào góc phải thấy mục “Xem thông tin tỷ giá các chi nhánh tại đây”

ta nhấn vào nút này, kết quả ta được dẫn tới trang http://www.vietcombank.com.vn/ExchangeRates/:

Nhấn vào nút XML ở trên, ta tiếp tục được dẫn tới 1 link khác : http://www.vietcombank.com.vn/ExchangeRates/ExrateXML.aspx

Bây giờ nhiệm vụ của ta là xây dựng 1 Website ASP .NET Core để truy suất và hiển thị toàn bộ tỉ giá trong này lên giao diện.

Ta khởi động Visual Studio (Tui dùng VS 2017 nha)-> rồi vào File / chọn New / chọn Project:

Lúc này màn hình tạo Project hiển thị ra như dưới đây:

Ta chọn ASP .NET Core Web Application

Đặt tên Project là “Vietcombank”, nhớ lưu vào đâu đó khác ổ C hay Desktop là OK (Desktop là ổ C đó nha) rồi bấm OK:

Lúc này màn hình tạo Project mới hiển thị ra, ta chọn Web Application (Model- View – Controllers), phía trên chọn ASP .NET Core 2.1, nhớ bỏ tick Configure for HTTPs. sau đó nhấn OK nha, Project sẽ được tạo ra như dưới đây:

Bây giờ ta tiến hành tạo các  lớp C# dạng POCO, cấu trúc của nó giống như Ngân Hàng Vietcombank cung cấp trong XML tỉ giá:

Như vậy dựa vào cấu trúc này thì ta phải tạo 2 Lớp C#. Đó là lớp Exrate và lớp ExrateList.

Exrate có các thuộc tính: CurrencyCode, CurrencyName, Buy, Transfer, Sell. Tất cả chúng đề có kiểu chuỗi là Ok (có thể Buy, Transfer, Sell ta để kiểu double cũng ngon lành (nhưng vì chả tính toán gì cả, ta phang luôn kiểu string)

ExrateList Có các thuộc tính: DateTime, List<Exrate>, Source.

Bây giờ ta lần lượt tạo các lớp:

Đầu tiên là Lớp Exrate, ta bấm chuột phải vào Models/ chọn Add/ Chọn Class:

màn hình Tạo lớp hiển thị ra như dưới đây:

Ta chọn Class, Name đặt là Exrate.cs rồi bấm Add:

Coding cho lớp Exrate này mapping với các thuộc tính, tag được định nghĩa trong XML của Ngân hàng Vietcombank:

using System.Xml.Serialization;

namespace VCB.Models
{
    public class Exrate
    {
        [XmlAttribute(AttributeName = "CurrencyCode")]
        public string CurrencyCode { get; set; }
        [XmlAttribute(AttributeName = "CurrencyName")]
        public string CurrencyName { get; set; }
        [XmlAttribute(AttributeName = "Buy")]
        public string Buy { get; set; }
        [XmlAttribute(AttributeName = "Transfer")]
        public string Transfer { get; set; }
        [XmlAttribute(AttributeName = "Sell")]
        public string Sell { get; set; }
    }
}

 

Ở trên thấy Tui using System.Xml.Serialization, đây là thư viên liên quan XML, cho phép chuyển hóa từ XML -> C# class

Còn các [XmlAttribute(AttributeName = “CurrencyCode”)] để nói cho C# hiểu nó cần mapping đúng thuộc tính nào trong tag XML. Tên Property của C# có thể viết lung tung, nhưng trong XmlAttribute phải viết chính xác những gì Ngân Hàng Vietcombank cung cấp.

Tiếp tục lặp lại thao tác thêm lớp mới cho ExrateList:

``` <code class="language-cs">using System.Collections.Generic; using System.Xml.Serialization; namespace VCB.Models { [XmlRoot(ElementName = "ExrateList")] public class ExrateList { [XmlElement(ElementName = "DateTime")] public string DateTime { get; set; } [XmlElement(ElementName = "Exrate")] public List<Exrate> Exrates { get; set; } [XmlElement(ElementName = "Source")] public string Source { get; set; } } } ``` </code>

Bước tiếp theo là tạo 1 Controller tên là TiGiaController để rút trích dữ liệu Tỉ giá của Ngân hàng đồng thời chuyển hóa nó qua C# class để hiển thị lên Website riêng của mình:

Bấm chuột phải vào Controllers/ chọn Add/ chọn Controller…:

màn hình lựa chọn Controller xuất hiện:

Ta chọn MVC Controller Empty rồi bấm Add, màn hình yêu cầu đặt tên cho Controller xuất hiện:

ta đổi Default thành TiGia rồi bấm Add, kết quả:

Lúc này hàm Index hiển thị ra, ta bấm chuột phải vào Index để tạo View bằng cách chọn Add View… (giao diện Website cho nó):

Lúc này màn hinh tạo View hiển thị ra:

Phần Template: Chọn List (hiển thị danh sách, trong View nó là Table đó)

Phần Model calss: Chọn Exrate -> để hiển thị danh sách Exrate trong lớp ExrateList

các thông số khác để vậy nha, giờ bấm ADD:

Kết quả View hiển thị ra như dưới đây:

Coding HTML đầy đủ của Tigia/Index.cshtml

<code class="language-html">

@model IEnumerable&lt;VCB.Models.Exrate&gt;

@{
    ViewData["Title"] = "Index";
}

&lt;h2&gt;Index&lt;/h2&gt;

&lt;p&gt;
    &lt;a asp-action="Create"&gt;Create New&lt;/a&gt;
&lt;/p&gt;
&lt;table class="table"&gt;
    &lt;thead&gt;
        &lt;tr&gt;
            &lt;th&gt;
                @Html.DisplayNameFor(model =&gt; model.CurrencyCode)
            &lt;/th&gt;
            &lt;th&gt;
                @Html.DisplayNameFor(model =&gt; model.CurrencyName)
            &lt;/th&gt;
            &lt;th&gt;
                @Html.DisplayNameFor(model =&gt; model.Buy)
            &lt;/th&gt;
            &lt;th&gt;
                @Html.DisplayNameFor(model =&gt; model.Transfer)
            &lt;/th&gt;
            &lt;th&gt;
                @Html.DisplayNameFor(model =&gt; model.Sell)
            &lt;/th&gt;
            &lt;th&gt;&lt;/th&gt;
        &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
        @foreach (var item in Model)
        {
            &lt;tr&gt;
                &lt;td&gt;
                    @Html.DisplayFor(modelItem =&gt; item.CurrencyCode)
                &lt;/td&gt;
                &lt;td&gt;
                    @Html.DisplayFor(modelItem =&gt; item.CurrencyName)
                &lt;/td&gt;
                &lt;td&gt;
                    @Html.DisplayFor(modelItem =&gt; item.Buy)
                &lt;/td&gt;
                &lt;td&gt;
                    @Html.DisplayFor(modelItem =&gt; item.Transfer)
                &lt;/td&gt;
                &lt;td&gt;
                    @Html.DisplayFor(modelItem =&gt; item.Sell)
                &lt;/td&gt;
                &lt;td&gt;
                    @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
                    @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
                    @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
                &lt;/td&gt;
            &lt;/tr&gt;
        }
    &lt;/tbody&gt;
&lt;/table&gt;
</code>

Giờ quay lại Controller: TiGiaController, tiến hành chỉnh sửa coding:

using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Net;
using System.Xml.Serialization;
using VCB.Models;
namespace VCB.Controllers
{
    public class TiGiaController : Controller
    {
        public IActionResult Index()
        {
            string siteContent = string.Empty;
            // link XML của Vietcombank
            string url = "https://www.vietcombank.com.vn/exchangerates/ExrateXML.aspx";
            //dùng HTTPWebRequest
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.AutomaticDecompression = DecompressionMethods.GZip;
            //lấy đối tượng Response
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            //gọi hàm GetResponseStream() để trả về đối tượng Stream
            Stream responseStream = response.GetResponseStream();
            //convert từ XML qua C# model:
            XmlSerializer serializer = new XmlSerializer(typeof(ExrateList));
            ExrateList exrateList = (ExrateList)serializer.Deserialize(responseStream);
            //lấy danh sách Extrates truyền qua cho View
            return View(exrateList.Exrates);
        }
       
    }
}

Nhấn F5 chạy lên, ta có kết quả Website như mong muốn:

Như vậy Tui đã trình bày xong cách dùng ASP .NET Core để truy suất dữ liệu Tỉ giá của ngân hàng Vietcombank, cách thức chuyển hóa từ XML thành C# class, cũng như hướng dẫn cách làm với Model – View – Controller trong ASP .NET Core.

Đây là source code của Project: Tải tại đây

Chúc các bạn thành công!

Xem chi tiết:[](https://devcode.top/View/61/rut-trich-du-lieu-ti-gia-hoi-doai-cua-ngan-hang-vietcombank-bang-asp.net-core.html)

                                                                                                                                  DevCode.Top via  TechTalk


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí