4.1. Dạng SOAP (Simple Object Access Protocol)
Để gọi Web Service dạng SOAP, ta sẽ dùng thư viện KSOAP2. Có thể tải thư viện này tại địa chỉ sau :
http://www.4shared.com/file/uOhx5aoj/ksoap2-android-assembly-24-jar.html.
Trong thư viện này, việc thực hiện yêu cầu đến Web Service cũng như nhận kết quả trả về thường thông qua lớp SoapObject . Có 3 tham số quan trọng được yêu cầu : không
26
gian tên, tên phương thức dùng, địa chỉ URL của Web Service. Ngoài ra, có một tham số mở rộng khác cũng quan trọng không kém là SOAP_ACTION, nó là sự kết hợp giữa không gian tên và tên phương thức bằng công thức sau:
SOAP_ACTION = NAMESPACE + METHOD_NAME Các bước sau sẽ giúp thực hiện một lời gọi Web Service với KSOAP2 :
Bước 1: tạo một đối tượng SoapObject với 2 tham số truyền vào là
không gian tên và tên phương thức (hàm) của dịch vụ.
Bước 2: truyền các tham số cho phương thức của Web Services (nếu có)
dùng hàm addProperty(). Hàm này có 2 tham đối lần lượt là tên biến cần truyền tham trị và giá trị của nó.
Bước 3: tạo đối tượng SoapSerializationEnvelope để chỉ định các thông
tin khác như: phiên bản SOAP, Web Service có dựa trên .NET hay không, thiết lập đầu ra cho thông điệp kết quả.
Bước 4: tạo đối tượng AndroidHttpTransport, truyền vào địa chỉ URL
của Web Service cần gọi.
Bước 5: thực hiện lời gọi call() từ đối tượng HttpTransportSE, với 2 tham số truyền vào là SOAP_ACTION và đối tượng SoapSerializationEnvelope đã tạo.
Bước 6:Nhận kết quả trả về thông qua đối tượng
SoapSerializationEnvelope bằng hàm getResponse() khi kết quả trả về là một kiểu chuỗi hay bằng thuộc tính bodyIn khi kết quả trả về là một kiểu danh sách.
4.2. Ví dụ minh họa
4.2.1. Đặt vấn đề
Chúng ta sẽ tạo một ứng dụng minh họa hiển thị chi tiết lộ trình tàu lửa bằng việc gọi Web Service xây dựng bằng .NET (dạng SOAP). Web Service này có tham số đầu vào là mã tuyến, điểm đi, điểm đến. Kết quả đầu ra với thông tin gồm thông tin chính như tên trạm trên lộ trình, thời gian đi, thời gian đến , cự ly chặng. Ví dụ kết quả gọi Web Service với mã tuyến là 154, điểm đi là Sài Gòn, điểm kết thúc là Nha Trang dạng như sau:
27
Hình 4.1 - Minh họa kết quả sau khi gọi web service
Mô hình kết nối Web Service và giao diện chương trình đơn giản như sau:
SQL Server
Web Service (.NET)
Gọi Web Service nhận dữ liệu
Truy xuất lấy dữ liệu
28
4.2.2. Giải quyết
Bước 1: chèn thư viện KSOAP2 vào ứng dụng. Sau khi download thư
viện, ta sẽ có một tệp có định dạng là .jar. Để chèn thư viện đó vào ứng dụng, ta chỉ cần chọn nhấn chuột phải vào tên dự án ứng dụng, sau đó chọn Properties>Java build path>Libraries>Add External Jars >chọn đường dẫn đến thư viện đã tải về>OK
Hình 4.3 - Hình minh họa việc chèn thư viện KSOAP2 vào ứng dụng
Bước 2: xây dựng lớp thừa kế từ ListActivity để hiển thị giao diện màn
hình. Lớp này cũng sẽ hiện thực giao diện OnClickListener, nạp chồng hàm onClick() để xử lý sự kiện khi người dùng ấn vào nút thực hiện gọi Web Service lấy thông tin chi tiết về lộ trình. Xin xem thêm chi tiết trong phần Phụ lục mục 3.