fbpx
Hàng triệu nội dung hữu ích dành riêng cho bạn đã sẵn sàng. Tìm hiểu thêm
Tran Duy Thanh Level 4

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

Tran Duy Thanh   6 min read

Dạo này 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

Nên Tui cũng ngứa tay hướng dẫn các bạn 1 bài nhỏ nhỏ dùng ASP .NET Core đó là “Rút trích dữ liệu Tỉ giá hối đoái của ngân hàng Vietcombank”.

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace Vietcombank.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:

chỉnh sửa coding cho nó như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace Vietcombank.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; }
}
}

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

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
@model IEnumerable<Vietcombank.Models.Exrate>
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.CurrencyCode)
</th>
<th>
@Html.DisplayNameFor(model => model.CurrencyName)
</th>
<th>
@Html.DisplayNameFor(model => model.Buy)
</th>
<th>
@Html.DisplayNameFor(model => model.Transfer)
</th>
<th>
@Html.DisplayNameFor(model => model.Sell)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CurrencyCode)
</td>
<td>
@Html.DisplayFor(modelItem => item.CurrencyName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Buy)
</td>
<td>
@Html.DisplayFor(modelItem => item.Transfer)
</td>
<td>
@Html.DisplayFor(modelItem => item.Sell)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</tbody>
</table>

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

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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.Xml.Serialization;
using Vietcombank.Models;
namespace Vietcombank.Controllers
{
public class TiGiaController : Controller
{
public IActionResult Index()
{
string siteContent = string.Empty;
// link XML của Vietcombank
//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!

Chào mừng trở lại.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Chào mừng trở lại.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Chào mừng tham gia.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Nhấp vào “Đăng ký” để chấp nhận Điều khoản dịch vụ và chính sách bảo mật của Toppick.