Mục đích:
trong hướng dẫn này chúng ta sẽ tạo một webservice cung cấp dịch vụ lấy kết quả
xổ số. (Dữ liệu được lấy từ RSS của trang xskt.com.vn)
Bước 0: Cấu hình cài đặt Axis2 trên Eclipse
- Tải gói Axis2-1.4 từ trang http://ws.apache.org/axis2/download/1_4/download.cgi
- Tải gói phiên bản “Standard Binary Distribution”, giải nén và lưu nhớ vị trí đó
- Mở Eclipse → Vào Windows → Mục
Preferences ta sẽ được như hình sau:
- Ta chọn Webservices → Chọn Axis2 Preferences
- Chọn đường dẫn tới thư mục Axis2 mà chúng ta đã giải nén ở bước trên, chúng sẽ được một màn hình thông báo “Axis2 runtime loaded sucessfully” như sau:
- Click chọn OK
Bước 1: Tạo một web project
- Tartget runtime ở đây ta chọn Apache Tomcat 7.0 (đã được cấu hình trước đó)
- Dynamic web module version ta chọn 2.5 để có thể sử dụng Axis2
- Mục Configuation
- Chọn OK và sau đó Finish để tiến hành tạo web project
Bước 2: Xây dựng Interface định nghĩa các phương thức mà chúng ta sẽ cung cấp dịch vụ web
- Ta đặt tên Interface này là KetQuaXoSoInterface
package hcmute.kqsx;
import java.util.ArrayList;
public interface KetQuaXoSoInterface {
/**
* @return một ArrayList<String> chứa danh sách các
miền
*/
public
ArrayList<String> getDanhSachMien();
/**
* @param tenMien: tên miền
* @return một ArrayList<String> chứa danh sách các
tỉnh theo miền đưa vào
*/
public
ArrayList<String> getDanhSachTinh(String tenMien);
/**
* @param tenMien:tên miền
* @param tenTinh:tên tỉnh
* @return một ArrayList<String> chứa danh sách
ngày có kết quả xổ số
*/
public
ArrayList<String> getDanhSachNgay(String tenMien, String tenTinh);
/**
* @param tenMien:tên miền
* @param tenTinh:tên tỉnh
* @param ngayXoSo:ngày xổ số
* @return ArrayList<String> chứa danh sách kết
quả xổ số
*/
public
ArrayList<String> getDanhSachKetQua(String tenMien, String tenTinh,
String ngayXoSo);
}
Bước 3: Tiến hành hiện thực Interface ta vừa tạo
- Ta đặt tên lớp này là KetQuaXoSoModel
package hcmute.kqsx;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class KetQuaXoSoModel implements KetQuaXoSoInterface
{
String strPath = "http://localhost:8080/KetQuaXoSoServer/ketquasoxo.xml";
Document dom;
public KetQuaXoSoModel() {
// strPath =
"ketquaxoso.xml";
DocumentBuilderFactory
dbf = DocumentBuilderFactory.newInstance();
try {
// Using factory
get an instance of document builder
DocumentBuilder
db = dbf.newDocumentBuilder();
// parse using
builder to get DOM representation of the XML file
dom = db.parse(strPath);
} catch
(ParserConfigurationException pce) {
pce.printStackTrace();
} catch (SAXException se) {
se.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
@Override
public
ArrayList<String> getDanhSachMien() {
ArrayList<String>
list = new
ArrayList<String>();
Element docEle =
dom.getDocumentElement();
NodeList nl =
docEle.getElementsByTagName("mien");
if (nl != null &&
nl.getLength() > 0) {
for (int i = 0; i <
nl.getLength(); i++) {
Element
el = (Element) nl.item(i);
String
temp = el.getAttribute("tenmien");
list.add(temp);
}
}
return list;
}
@Override
public
ArrayList<String> getDanhSachTinh(String tenMien) {
ArrayList<String>
list = new ArrayList<String>();
Element docEle =
dom.getDocumentElement();
NodeList nl =
docEle.getElementsByTagName("mien");
if (nl != null &&
nl.getLength() > 0) {
for (int i = 0; i <
nl.getLength(); i++) {
String
temp = "";
Element
el = (Element) nl.item(i);
if (el.getAttribute("tenmien").equals(tenMien)) {
NodeList
nl1 = el.getElementsByTagName("tinh");
if (nl1 != null) {
for (int j = 0; j <
nl1.getLength(); j++) {
Element
el1 = (Element) nl1.item(j);
temp
= el1.getAttribute("tentinh");
list.add(temp);
}
}
}
}
}
Bước 4: Xây dựng các phương thức để tiến hành cung cấp dịch vụ web
- Tạo Class KetQuaXoSo
- package hcmute.kqsx;import java.util.ArrayList;/*** @author ChuwxNTC*/public class KetQuaXoSo {public ArrayList<String> getDanhSachMien() {return new KetQuaXoSoModel().getDanhSachMien();}public ArrayList<String> getDanhSachTinh(String tenMien) {return new KetQuaXoSoModel().getDanhSachTinh(tenMien);}public ArrayList<String> getDanhSachNgay(String tenMien, String tenTinh) {return new KetQuaXoSoModel().getDanhSachNgay(tenMien, tenTinh);}public ArrayList<String> getDanhSachKetQua(String tenMien, String tenTinh,String ngayXoSo) {return new KetQuaXoSoModel().getDanhSachKetQua(tenMien, tenTinh, ngayXoSo);}}
Bước 5: Tạo file ketquaxoso.xml để lưu danh sách tỉnh đường dẫn RSS đến trang xskt.com.vn
<?xml version="1.0"
encoding="UTF-8"?>
<ketquasoxo>
<mien tenmien="Miền Bắc">
<tinh tentinh="Phú Yên"
link="http://xskt.com.vn/rss-feed/phu-yen-xspy.rss"
/>
</mien>
<mien tenmien="Miền
Trung">
<tinh tentinh="Quảng
Ngãi" link="http://xskt.com.vn/rss-feed/quang-ngai-xsqng.rss"
/>
<tinh tentinh="Bình Định"
link="http://xskt.com.vn/rss-feed/binh-dinh-xsbdi.rss"
/>
<tinh tentinh="Phú Yên"
link="http://xskt.com.vn/rss-feed/phu-yen-xspy.rss"
/>
</mien>
<mien tenmien="Miền Nam">
<tinh tentinh="Đồng
Tháp" link="http://xskt.com.vn/rss-feed/dong-thap-xsdt.rss"
/>
<tinh tentinh="Hậu
Giang" link="http://xskt.com.vn/rss-feed/hau-giang-xshg.rss"
/>
</mien>
</ketquasoxo>
Bước 6: Tiến hành xây dựng webservice
- Chọn lớp KetQuaXoSo vừa tạo: Vào File → New → Projects... → Chọn Web → Chọn Dynamic Web Project
- Click chuột phải chọn New → Others… → Mục Web service → Chọn Web service
- Ta được như hình sau:
- Ta chỉnh chọn Web service runtime là Apache Axis2 như sau:
- Chọn Next
- Sau đó ta Start server
- Click Finish
Bước 7: Kiểm tra hoạt động web service
- Click chuột phải vào Project → ta chọn Run As → Run on Server
- Nếu như dẫn tới trang lỗi sau “HTTP Status 404 – /KetQuaXoSoServer/”
- Thì ta hãy thử dường dẫn sau: http://localhost:8080/KetQuaXoSoServer/axis2-web/index.js
- Nếu kết quả hiển thự như màn hình này thì mọi thứ đang hoạt động tốt
- Click chọn Service ta sẽ được danh sách các dịch vụ mà ta cung cấp
- Ta thử truy cập một phương thức lấy danh sách các miền bằng cách gõ đường dẫn sau đây vào trình duyệt: http://localhost:8080/KetQuaXoSoServer/services/KetQuaXoSo/getDanhSachMien
Tổng kết: Như vậy là qua hướng dẫn này bạn đã tạo được một web service cung cấp dịch vụ lấy kết quả xổ số kiến thiết. Trong bài tiếp theo mình sẽ hướng dẫn các bạn cách gọi một web service từ Android.
sao em thực hiện bước đưa lên webservice toàn bị lỗi như vậy "IWAB0014E Unexpected exception occurred." ah... help me!!!!!!!!!!!
Trả lờiXóasao em thực hiện bước đưa lên webservice toàn bị lỗi như vậy "IWAB0014E Unexpected exception occurred." ah... help me!!!!!!!!!!!
Trả lờiXóaketquaxoso mien bac
Anh ơi anh có thể post cái hàm getDanhSachNgay và getDanhSachKetQua được ko
Trả lờiXóa2 cái hàm trên e lấy dữ liệu từ file xml thì e hiểu nhưng còn lấy ngày và kết quả từ RSS của kqxs e không hình dung ra được
Thanks anh