[Android] Ksoap - Webservice
1, Tạo
project tên soap_demo1. (Nhớ tạo trên máy ảo 1.6 cho đơn giản)
Download full source code Click Here
2 2, Tạo
thư mục mới tên “libs” trong thư mục gốc của
project.
3. Truy
cập địa chỉ (hoặc lên google search cho lẹ)
và download file "ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar"
. Bỏ file vừa download vào thư mục “libs”
vừa tạo.
5.Trong
hộp thoại “Properties” chọn tab “Libraries” chọn nút “Add JARs…” chọn đến file
“ksoap2…” vừa mới chép vào rồi OK -> OK.
6.Dể ý thấy hình của file trong thư mục lib có thêm cái
hình icon nhỏ ở góc.
7. Mở
file layout thiết kế giao diện có 2 TextView làm nhãn, 1 EditText để nhập độ F,
1 EditText để nhập độ C, 1 button để đổi “Độ C sang độ F” , 1 button để đổi “Độ
F sang độ C” và 1 button để “Xóa”:
8.Truy
cập địa chỉ http://www.w3schools.com/webservices/tempconvert.asmx
nhấn vào hàm đầu tiên (CelsiusToFahrenheit) kéo xuống bên dưới và phân tích cú pháp.
Cho CelsiusToFahrenheit:
|
Cho FahrenheitToCelsius:
|
1 9. Mở file manifest và khai báo quyền internet
<uses-permission android:name="android.permission.INTERNET"/>
10: Trong file java chính, khai báo các biến, ánh xạ
chúng.
EditText etdoC,etdoF;
Button btFtoC, btCtoF,btclear;
3 11: Khai báo các biến chuỗi để chuẩn bị.
private static String METHOD_NAME1 = "FahrenheitToCelsius";
private static String METHOD_NAME2 = "CelsiusToFahrenheit";
private static String URL =
"http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";
12: Bắt
sự kiện onClick cho nút btFtoC. Trong hàm onClick của nó bắt đầu viết như bên
dưới gồm khởi tạo SoapObject, gán dữ liệu vào, khai báo envelope, và gán
outputSoapObject cho envelope:
//khoi tao soap request va param
SoapObject request=new SoapObject(NAMESPACE,METHOD_NAME1);
//dua du lieu vao cho request
request.addProperty("Fahrenheit",etdoF.getText().toString());
//khai bao Envelope va dua vao version cua
SOAP
SoapSerializationEnvelope envelope=
new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet=true;
5 13: Tiếp
theo khai báo Transport và đưa vào URL. Sau đó gọi hàm call để gọi service và
truyền vào action và envelope.
//khoi tao httptransport
HttpTransportSE httptransport=new HttpTransportSE(URL);
//goi webservice
try {
httptransport.call( SOAP_ACTION1, envelope);
} catch (Exception e) {
Log.d("loi"," "+ e.toString());
}
14: Cuối
cùng lấy dữ liệu về và gán lên EditText.
//lay du lieu
SoapObject
ketqua=(SoapObject)envelope.bodyIn;
if(ketqua!=null)
{
etdoC.setText(ketqua.getProperty(0).toString());
}
else
{
Toast.makeText(getApplicationContext(),
"khong
co ket qua", Toast.LENGTH_SHORT).show();
}
15: Chạy
chương trình (nhớ phải có internet). Nhập vào 1 con số độ F, nhấn nút “Đổi F
sang C” để thấy kết quả.
16. Viết
tiếp cho nút “Đổi C sang F”.
17. Nâng
cấp version lên 4.0 chạy thử để thấy lỗi. Sửa lỗi để chương trình có thể chạy tốt
trên các version cao.
No comments: