- Vào File → New → Mục Android → Ta chọn Android
Application Project
- Đặt tên ứng dụng Android là KetQuaXoSoClient và
tùy chỉnh như hình sau:
- Chọn Next, và Next để tiến hành cấu hình
Launcher Icon
- Trong res/layout/activity_main ta thiết kết 3
spinner và một listview để lấy kết quả về:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
>
<Spinner
android:id="@+id/spDanhSachMien"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:prompt="@string/spinner_mien"
android:spinnerMode="dropdown"
/>
<Spinner
android:id="@+id/spDanhSachTinh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/spDanhSachMien"
android:prompt="@string/spinner_ngay"
android:spinnerMode="dropdown"
/>
<Spinner
android:id="@+id/spDanhSachNgay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/spDanhSachTinh"
android:prompt="@string/spinner_tinh"
android:spinnerMode="dropdown"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@+id/spDanhSachNgay"
>
<ListView
android:id="@+id/lvKetQua"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
>
</ListView>
</LinearLayout>
</RelativeLayout>
- Trong res/value/string.xml tra khai báo như sau:
<resources>
<string name="app_name">Kết quả sổ xố</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">Kết quả sổ xố</string>
<string name="spinner_mien">Chọn miền</string>
<string name="spinner_tinh">Chọn Tỉnh/Thành Phố</string>
<string name="spinner_ngay">Chọn ngày xổ số</string>
</resources>
- Trong AndroidManifest.xml ta khai báo quyền sử dụng
Internet
<?xml version="1.0" encoding="utf-8"?>
<manifest
...>
<uses-permission android:name="android.permission.INTERNET"
/>
...
</manifest>
- Thêm thư viện ksoap đã download ở bước chuẩn bị
trên vào libs
package hcmute.kqxs.client;
import java.io.IOException;
import java.util.ArrayList;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Log;
public class TienIch {
private static String METHOD_NAME_1
= "getDanhSachMien";
private static String METHOD_NAME_2
= "getDanhSachTinh";
private static String METHOD_NAME_3
= "getDanhSachNgay";
private static String METHOD_NAME_4
= "getDanhSachKetQua";
private static String NAMESPACE = "http://kqsx.hcmute";
private static String SOAP_ACTION_1
= NAMESPACE + METHOD_NAME_1;
private static String SOAP_ACTION_2
= NAMESPACE + METHOD_NAME_2;
private static String SOAP_ACTION_3
= NAMESPACE + METHOD_NAME_3;
private static String SOAP_ACTION_4
= NAMESPACE + METHOD_NAME_4;
private static final String URL = "http://192.168.42.108:8080/KetQuaXoSoServer/services/KetQuaXoSo?wsdl";
public
ArrayList<String> getDanhSachMien() {
SoapObject resultSoap
= null;
try {
SoapObject
request = new SoapObject(NAMESPACE, METHOD_NAME_1);
SoapSerializationEnvelope
envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet
= true;
envelope.setOutputSoapObject(request);
HttpTransportSE
androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION_1,
envelope);
resultSoap =
(SoapObject) envelope.bodyIn;// envelope.getResponse();
} catch (IOException e) {
} catch
(XmlPullParserException e) {
} catch (Exception e) {
}
ArrayList<String>
result = new ArrayList<String>();
for (int i = 0; i <
resultSoap.getPropertyCount(); i++) {
Log.i("ChuNT",
resultSoap.getProperty(i).toString());
result.add(resultSoap.getProperty(i).toString());
}
return result;
}
public
ArrayList<String> getDanhSachTinh(String tenMien) {
Log.i("ChuNT", "Hàm lấy danh
sách đang tìm kết quả từ dịnh vụ web cho "
+
tenMien);
SoapObject resultSoap
= null;
try {
SoapObject
request = new SoapObject(NAMESPACE, METHOD_NAME_2);
request.addProperty("tenMien", tenMien);
SoapSerializationEnvelope
envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet
= true;
envelope.setOutputSoapObject(request);
HttpTransportSE
androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION_2,
envelope);
resultSoap =
(SoapObject) envelope.bodyIn;// envelope.getResponse();
} catch (IOException e) {
} catch
(XmlPullParserException e) {
} catch (Exception e) {
}
ArrayList<String>
result = new ArrayList<String>();
for (int i = 0; i <
resultSoap.getPropertyCount(); i++) {
Log.i("ChuNT",
resultSoap.getProperty(i).toString());
result.add(resultSoap.getProperty(i).toString());
}
return result;
}
public
ArrayList<String> getDanhSachNgay(String tenMien, String tenTinh) {
SoapObject resultSoap
= null;
try {
SoapObject
request = new SoapObject(NAMESPACE, METHOD_NAME_3);
request.addProperty("tenMien", tenMien);
request.addProperty("tenTinh", tenTinh);
SoapSerializationEnvelope
envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet
= true;
envelope.setOutputSoapObject(request);
HttpTransportSE
androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION_3,
envelope);
resultSoap =
(SoapObject) envelope.bodyIn;// envelope.getResponse();
} catch (IOException e) {
} catch
(XmlPullParserException e) {
} catch (Exception e) {
}
ArrayList<String>
result = new ArrayList<String>();
for (int i = 0; i <
resultSoap.getPropertyCount(); i++) {
Log.i("ChuNT",
resultSoap.getProperty(i).toString());
result.add(resultSoap.getProperty(i).toString());
}
return result;
}
public
ArrayList<String> getDanhSachKetQua(String tenMien,
String tenTinh,
String ngayXoSo) {
SoapObject resultSoap
= null;
try {
SoapObject
request = new SoapObject(NAMESPACE, METHOD_NAME_4);
request.addProperty("tenMien", tenMien);
request.addProperty("tenTinh", tenTinh);
request.addProperty("ngayXoSo", ngayXoSo);
SoapSerializationEnvelope
envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE
androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION_4,
envelope);
resultSoap =
(SoapObject) envelope.bodyIn;// envelope.getResponse();
} catch (IOException e) {
} catch
(XmlPullParserException e) {
} catch (Exception e) {
}
ArrayList<String>
result = new ArrayList<String>();
for (int i = 0; i <
resultSoap.getPropertyCount(); i++) {
Log.i("ChuNT", resultSoap.getProperty(i).toString());
result.add(resultSoap.getProperty(i).toString());
}
return result;
}
}
- String URL =
"http://192.168.42.108:8080/KetQuaXoSoServer/services/KetQuaXoSo?wsdl";để lưu đường dẫn cung cấp dịch vụ web.
- private String METHOD_NAME…Để lưu phương thức được cung cấp trong dịch vụ web
- private String NAMESPACE …Package và namespace được đảo ngược chuỗi
package hcmute.kqxs.client;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
public class MainActivity extends Activity {
Spinner spDanhSachMien;
Spinner spDanhSachTinh;
Spinner spDanhSachNgay;
ListView lvKetQua;
ArrayAdapter<String>
arrayAdapterMien;
ArrayAdapter<String>
arrayAdapterTinh;
ArrayAdapter<String>
arrayAdapterNgay;
ArrayAdapter<String>
arrayAdapterKetQua;
String tenMien;
String tenTinh;
String ngayXoSo;
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spDanhSachMien = (Spinner)
findViewById(R.id.spDanhSachMien);
spDanhSachTinh = (Spinner)
findViewById(R.id.spDanhSachTinh);
spDanhSachNgay = (Spinner)
findViewById(R.id.spDanhSachNgay);
lvKetQua = (ListView)
findViewById(R.id.lvKetQua);
arrayAdapterMien = new
ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item);
arrayAdapterTinh = new
ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item);
arrayAdapterNgay = new
ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item);
arrayAdapterKetQua = new
ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
spDanhSachMien.setAdapter(arrayAdapterMien);
spDanhSachTinh.setAdapter(arrayAdapterTinh);
spDanhSachNgay.setAdapter(arrayAdapterNgay);
lvKetQua.setAdapter(arrayAdapterKetQua);
arrayAdapterMien.add("Chọn miền xổ
số");
arrayAdapterTinh.add("Chọn tỉnh xổ
số");
arrayAdapterNgay.add("Chọn ngày xổ
số");
ArrayList<String>
temp = new
TienIch().getDanhSachMien();
for (String string :
temp) {
arrayAdapterMien.add(string);
}
spDanhSachMien.setOnItemSelectedListener(spDanhSachMienSelected);
spDanhSachTinh.setOnItemSelectedListener(spDanhSachTinhSelected);
spDanhSachNgay.setOnItemSelectedListener(spDanhSachNgaySelected);
}
OnItemSelectedListener spDanhSachMienSelected = new
OnItemSelectedListener() {
public void
onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
tenMien =
parent.getItemAtPosition(position).toString();
Log.i("ChuNT", tenMien);
ArrayList<String>
temp = new
TienIch().getDanhSachTinh(tenMien);
spDanhSachTinh.setSelection(0);
spDanhSachNgay.setSelection(0);
arrayAdapterTinh.clear();
arrayAdapterTinh.add("Chọn tỉnh xổ
số");
for (String string :
temp) {
arrayAdapterTinh.add(string);
}
}
public void
onNothingSelected(AdapterView<?> arg0) {
}
};
OnItemSelectedListener spDanhSachTinhSelected = new
OnItemSelectedListener() {
public void
onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
tenTinh =
parent.getItemAtPosition(position).toString();
Log.i("ChuNT", tenTinh);
ArrayList<String>
temp = new TienIch().getDanhSachNgay(tenMien,
tenTinh);
spDanhSachNgay.setSelection(0);
arrayAdapterNgay.clear();
arrayAdapterNgay.add("Chọn ngày xổ
số");
for (String string :
temp) {
arrayAdapterNgay.add(string);
}
}
public void
onNothingSelected(AdapterView<?> arg0) {
}
};
OnItemSelectedListener spDanhSachNgaySelected = new
OnItemSelectedListener() {
public void
onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
ngayXoSo =
parent.getItemAtPosition(position).toString();
Log.i("ChuNT", ngayXoSo);
ArrayList<String>
temp = new
TienIch().getDanhSachKetQua(tenMien,
tenTinh, ngayXoSo);
arrayAdapterKetQua.clear();
for (String string :
temp) {
arrayAdapterKetQua.add(string);
}
}
public void
onNothingSelected(AdapterView<?> arg0) {
}
};
}
Như vậy qua phần này mình đã hướng dẫn các bạn cách gọi một web service thông qua dịch vụ web
dùng SOAP để trả kết quả về dạng XML. Ta dùng thư viện mã nguồn mở KSOAP để gọi
web service đó.