Kết nối các dịch vụ WEB 41.2 Các chuẩn dịch vụ Web và Giao thức ● UDDI Universal Description, Discovery and Integrated ● WSDL Web Services Description Language ● WSIL Web Services Inspec
Trang 1Trường ĐH Khoa Học Tự Nhiên Tp Hồ Chí Minh
TRUNG TÂM TIN HỌC
2014
Lập trình Android
Bài 2 Kết nối các dịch vụ WEB
Ngành Mạng & Thiết bị di động
Trang 2Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 2
● Khái niệm
● Các chuẩn dịch vụ Web và Giao thức
2. Kết nối RESTfull Service
Nội dung
Trang 3Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 3
1.1 Khái niệm
kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy
tính khác nhau thông qua mạng Internet.
trong cách thức hoạt động của các dịch vụ B2B (Business to
Business) và B2C (Business to Customer)
lập trình khác nhau và chạy trên những nền tảng khác nhau nhưng
có thể truy xuất được truy xuất từ một máy khách duy nhất.
Trang 4Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 4
1.2 Các chuẩn dịch vụ Web và Giao thức
● UDDI (Universal Description, Discovery and Integrated)
● WSDL (Web Services Description Language)
● WSIL (Web Services Inspection Language)
● SOAP (Simple Object Access Protocol)
Trang 5Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 5
1.2 Các chuẩn dịch vụ Web và Giao thức
● HTTP:
HTTP (Hypertext Transfer Protocol) Là giao thức mạng cho phép các hệ thống thông tin phân phối, và cộng tác với nhau HTTP là nên tảng giao tiếp dữ liệu cho WWW
HTTP hoạt động trên cơ chế giao thức request – response trong mô hình điện toán client – server thông qua URL
URL (Uniform Resource Locator) Là một URI cho biết sự tồn tại của một tài nguyên và cách thức để nhận tài nguyên đó
Trang 6Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 6
1.2 Các chuẩn dịch vụ Web và Giao thức
Trang 7Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 7
1.2 Các chuẩn dịch vụ Web và Giao thức
● HTTP:
HTTP Status code :
2xx Success ( Trạng thái thành công)
3xx Redirection ( Báo chuyển hướng)
4xx Client Error ( Báo lỗi client)
5xx Server Error ( Báo lỗi server)
Trang 8Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 8
1.2 Các chuẩn dịch vụ Web và Giao thức
● HTTP:
Ví dụ về Http Request:
GET http://www.fit.hcmus.edu.vn/vn/ HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, Accept-Language: vi-VN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;
Trident/4.0; GTB6.5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC2; NET CLR 2.0.50727; NET CLR 3.5.30729; NET CLR 3.0.30729; Media Center PC 6.0; NET4.0C; NET4.0E; OfficeLiveConnector.1.5;
OfficeLivePatch.1.3; InfoPath.3; AskTbGGSV5/5.8.0.12217) chromeframe/6.0.472.63
Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: www.fit.hcmus.edu.vn
Cookie:
.ASPXANONYMOUS=MG6LCiuSywEkAAAANTA2ZWNiYTAtYThiNy00MDA1LTkyN jUtYTllYzAxNTA3MTU10
Trang 9Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 9
1.2 Các chuẩn dịch vụ Web và Giao thức
● HTTP:
Ví dụ về Http Response:
HTTP/1.0 200 OK Cache-Control: private Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727 Set-Cookie: DotNetNukeAnonymous=7db3c001-c407-4adb-a60f-053b5dc76dc2;
expires=Thu, 30-Sep-2010 03:12:33 GMT; path=/; HttpOnly Set-Cookie: language=vi-VN; path=/; HttpOnly X-Powered-By: ASP.NET Date: Thu, 30 Sep 2010 02:52:33 GMT Content-Length: 24404
X-Cache: MISS from vweb.hcmuns.edu.vn Via: 1.0 vweb.hcmuns.edu.vn:80 (squid/2.6.STABLE16) Connection: keep-alive
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
// Nội dung trang web
Trang 10Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 10
1.2 Các chuẩn dịch vụ Web và Giao thức
● SOAP:
SOAP - Simple Object Accesss Protocol : là một giao thức giao tiếp có cấu trúc như XML và mã hóa thành định dạng chung cho các ứng dụng trao đổi với nhau
SOAP không định ra các ngữ nghĩa ứng dụng hoặc cách cài đặt chi tiết
SOAP cung cấp một cơ chế đơn giản và gọn nhẹ cho việc trao đổi thông tin có cấu trúc và định dạng giữa các thành phần trong một môi trường phân tán sử dụng XML
Trang 11Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 11
1.2 Các chuẩn dịch vụ Web và Giao thức
● SOAP:
Cấu trúc SOAP:
Trang 12Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 12
1.2 Các chuẩn dịch vụ Web và Giao thức
● REST:
REST (Representational State Transfer) là một kiểu kiến trúc phần mềm cho các hệ thống phân tán siêu truyền thông như là WWW
Đặc trưng của REST
Là dạng client – server
Phân tách giao diện của client ra khỏi dữ liệu
Cho phép mỗi thành phần phát triển độc lập
Hỗ trợ đa nền tảng
Mỗi yêu cầu từ client phải có đủ thông tin cần thiết để server có thể
hiểu được mà không cần phải lưu trữ thêm thông tin nào trước đó
Tất cả tài nguyên được truy cập thông qua một interface thống nhất (HTTP GET, PUT, POST, DELETE, )
Trang 13Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 13
1. Tổng quan về dịch vụ Web
● Khai báo và kiểm soát kết nối
● Truy xuất dữ liệu phản hồi
Nội dung
Trang 14Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 14
2.1 Khai báo và kiểm soát kết nối
● Quy tắc chung:
Không thực hiện các kết nối trong các tiến trình chính của ứng dụng (MainThread)
Mỗi kết nối cần được duy trì cho đến hết phiên tương tác
Khai báo quyền truy cập trong AndroidManifest.xml
<uses-permission android:name=”android.permission.INTERNET”/>
Khai báo quyền kiểm soát kết nối trên thiết bị.
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/>
Trang 15Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 15
2.1 Khai báo và kiểm soát kết nối
Kiểm soát kết nối:
● Ví dụ kiểm soát kết nối bằng kết nối Broadcast Receiver:
BroadcastReceiver mNetworkStateIntentReceiver = new BroadcastReceiver() {
@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager cm = ((ConnectivityManager) context
Trang 16Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 16
2.1 Khai báo và kiểm soát kết nối
org.apache.http
● Thực thi kết nối thông qua HttpURLConnection với phương thức
GET :
HttpURLConnection connection = null;
Url url = new URL(“http://221.132.37.130:6969/OnlineShopWebService”);
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10000);
connection.setReadTimeout(10000);
connection.setRequestMethod("GET");
Trang 17Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 17
2.1 Khai báo và kiểm soát kết nối
● Thực thi kết nối thông qua HttpURLConnection với phương thức
POST :
Url url = new URL(“http://221.132.37.130:6969/OnlineShopWebService”);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Trang 18Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 18
2.1 Khai báo và kiểm soát kết nối
● Thực thi kết nối với lớp org.apache.http.HttpGet :
InputStream content = null;
try {
HttpGet httpGet = new HttpGet(url));
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httpGet);
content = response.getEntity().getContent();
} catch (Exception e) {
Log.d("[GET REQUEST]", "Network exception" + e);
}
Trang 19Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 19
2.1 Khai báo và kiểm soát kết nối
● Thực thi kết nối với lớp org.apache.http.HttpPost :
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
// Dữ liệu thiết lập dạng JSON.
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("jsonParam", jsonObject
.toString()));
// Thiết lập dữ liệu trên đường truyền.
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
HttpResponse httpResponse = httpClient.execute(httpPost);
Trang 20Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 20
2.2 Truy xuất dữ liệu phản hồi
Việc truy xuất dữ liệu không phụ thuộc vào cách thức gọi dịch vụ,
dữ liệu luôn là InputStream , chỉ cần thực đọc dòng dữ liệu này và
chuyển đội thành dạng dữ liệu tương ứng cần tương tác.
● Ví dụ:
HttpEntity httpEntity = httpResponse.getEntity();
InputStream inputStream = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {builder.append(line);
}Log.d("HTSI", builder.toString());
inputStream.close();
Trang 21Lập trình Android (2014) – Bài 2 Kết nối các dịch vụ WEB 21Thảo luận