Trang 2 Giới thiệu• Hướng dẫn cách lấy dữ liệu từ Web và sử dụng vào mục đích khác• Những lý do mà một ứng dụng cần giao tiếp với website:– Kiểm tra các bản cập nhật, sửa lỗi, nâng cấp–
6/30/2011 CHƯƠNG TRUYỀN THÔNG VỚI WEB SERVER ThS Trần Bá Nhiệm Website: sites.google.com/site/tranbanhiem Email: tranbanhiem@gmail.com Nội dung • Giới thiệu • HTTP • Web server • WebClient • System.Net.HttpListener • Mobile Web 30/06/2011 Chương 4: Truyền thông với Web server 6/30/2011 Giới thiệu • Hướng dẫn cách lấy liệu từ Web sử dụng vào mục đích khác • Những lý mà ứng dụng cần giao tiếp với website: – Kiểm tra cập nhật, sửa lỗi, nâng cấp – Lấy thông tin liệu cập nhật – Tự động truy vấn liệu từ dịch vụ điều hành bên thứ – Xây dựng search engine – Cache trang web để truy cập nhanh 30/06/2011 Chương 4: Truyền thông với Web server Giới thiệu • Data mining: tải trang web xuống khai thác thơng tin tự động từ • Để khai thác thơng tin có ích từ HTML, cần phải quen thuộc với ngôn ngữ 30/06/2011 Chương 4: Truyền thông với Web server 6/30/2011 HTTP • HTTP hoạt động giao thức TCP/IP port 80 • Client mở TCP port 80 kết nối đến server • Client gửi HTTP request, server hồi đáp với HTTP response • Server đóng kết nối TCP 30/06/2011 Chương 4: Truyền thông với Web server HTTP request • Dạng đơn giản sau: GET / • Với số server cần phải xác định DNS name lệnh GET • Request yêu cầu server trở trang web mặc định • Thường có dạng phức tạp sau: 30/06/2011 Chương 4: Truyền thông với Web server 6/30/2011 HTTP request GET / HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Accept-Language: en-gb Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; NET CLR 1.0.3705) Host: 127.0.0.1:90 Connection: Keep-Alive 30/06/2011 Chương 4: Truyền thông với Web server HTTP request • Thơng tin cho server biết số điều client như: kiểu trình duyệt, phần liệu trình duyệt hiển thị HTTP header Ý nghĩa Accept Xác định kiểu MIME chấp nhận cho response Accept- */* thị cho chấp nhận tất Type/* thị kiểu Charset type Trong ví dụ application/msword cho biết trình duyệt hiển thị tài liệu MS Word Xác định character set chấp nhận response Nếu client phát Accept-Charset: iso-8859-5 server biết client không hiển thị ký tự tiếng Nhật 30/06/2011 Chương 4: Truyền thông với Web server 6/30/2011 HTTP header HTTP request Accept-Encoding Accept-Language Ý nghĩa Authorization Xác định client quản lý liệu nén Trong ví dụ Host cho biết trình duyệt hiểu chuẩn nén GZIP Xác định ngơn ngữ thích hợp cho người dùng, If-Modified-Since liên quan vị trí địa lý, ví dụ en-gb thị United Kingdom Cung cấp chứng thực client server 30/06/2011 Chỉ địa IP server dùng, khác với địa IP đích phải qua proxy Ví dụ: Host: 127.0.0.1:90 cho biết client server nằm máy tính, chạy port 90 Cho biết trang web không cần trả khơng có thay đổi từ ngày xác định Điều cho phép chế cache để làm việc hiệu Ví dụ: If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT Chương 4: Truyền thông với Web server HTTP request HTTP header Ý nghĩa Proxy-Authorization Range Cung cấp chứng thực client proxy Referer Cung cấp chế lấy phần trang web dựa vùng TE byte Ví dụ: bytes=500-600,601-999 User-Agent Cho biết trang client vừa xem Content-Type Transfer encoding (TE) cho biết phần mở rộng có Content-Length thể chấp nhận Chỉ kiểu trình duyệt client dùng Dùng POST request, kiểu MIME liệu post lên, thông thường application/x-www-form-urlencoded Dùng POST request, độ dài liệu (đi sau dịng trống) 30/06/2011 Chương 4: Truyền thơng với Web server 10 6/30/2011 HTTP request • GET POST lệnh HTTP phổ biến • Ngồi cịn có HEAD, OPTIONS, PUT, DELETE, TRACE • Lập trình web thường dùng với mã lệnh HTML có dạng: 30/06/2011 Chương 4: Truyền thông với Web server 11 POST request POST / HTTP/1.1 Content-Type: application/x-www-form- urlencoded Content-Length: 17 myField=some+text 30/06/2011 Chương 4: Truyền thông với Web 12 server 6/30/2011 HTTP response • Khi server nhận HTTP request, trích xuất trang theo u cầu trả client với HTTP header Đó HTTP response • HTTP response có dạng sau: 30/06/2011 Chương 4: Truyền thông với Web server 13 HTTP response HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Sun, 05 Jan 2003 20:59:47 GMT Connection: Keep-Alive Content-Length: 25 Content-Type: text/html Set-Cookie: ASPSESSIONIDQGGQQFCO=MEPLJPHDAGAEHENK AHIHGHGH; path=/ Cache-control: private This is a test html page! 30/06/2011 Chương 4: Truyền thông với Web server 14 6/30/2011 HTTP response HTTP response Ý nghĩa header ETag Dùng kết hợp với If-suffixed HTTP requests Location Dùng để điều hướng (redirect) sang trang web khác, kết hợp với HTTP 3xx responses Proxy-Authenticate Cung cấp chứng thực client proxy Server Chỉ phiên vendor server Ví dụ: IIS chạy WindowsXP WWW-Authenticate Cung cấp chứng thực client proxy Content-Type Chỉ kiểu MIME nội dung trả Ví dụ: HTML Content-Length Chỉ độ dài liệu (đi sau dòng trống) Server đóng kết nối sau gửi tất liệu, khơng cần thiết xử lý lệnh Set-Cookie Thiết lập cookie client Cookie file nhỏ ghi client Mỗi cookie có tên giá trị Ví dụ: tên 30/06/2011 cookie ASPSESSIONIDQGGQQFCO Chương 4: Truyền thông với Web server 15 HTTP response HTTP response Ý nghĩa code range Thông tin: Request nhận, tiếp tục xử lý 100–199 Thành công: Thao tác nhận thành công, hiểu 200–299 chấp nhận Điều hướng: Phải thêm thao tác để hoàn thành request 300–399 Điều hướng: Phải thêm thao tác để hoàn thành request 400–499 Lỗi server: Server đáp ứng request hợp 500-599 lệ Mỗi HTTP response có mã response code, ví dụ mã 200, theo sau số văn đọc được, đồng nghĩa với nhận thành công 30/06/2011 Chương 4: Truyền thông với Web server 16 6/30/2011 Các kiểu MIME • Multipart Internet mail extensions (MIME) • Các kiểu MIME mơ tả kiểu liệu, giúp cho máy tính khác hiểu xử lý phù hợp • Ví dụ: JPG ánh xạ đến image/jpeg, .TXT ánh xạ đến text/plain • Để tìm kiểu MIME cho file đó, mở registry editor HKEY_CLASSES_ROOT 30/06/2011 Chương 4: Truyền thông với Web server 17 System.Web • Cách dùng HTTP phổ biến khả tải nội dung HTML trang web lưu vào string • Ví dụ minh họa: 30/06/2011 Chương 4: Truyền thông với Web 18 server 6/30/2011 System.Web private string getHTTP(string szURL) { HttpWebRequest httpRequest; HttpWebResponse httpResponse; tring bodyText = ""; Stream responseStream; Byte[] RecvBytes = new Byte[Byte.MaxValue]; nt32 bytes; httpRequest = (HttpWebRequest) WebRequest.Create(szURL); httpResponse = (HttpWebResponse) httpRequest.GetResponse(); esponseStream = httpResponse.GetResponseStream(); 30/06/2011 Chương 4: Truyền thông với Web server 19 System.Web while (true) { bytes = responseStream.Read(RecvBytes, 0,RecvBytes.Length); if (bytes