Chươn g3 Khả năng kết nối mạng bằng .Net CompactFramework
3.6 Truyền thông với máy chủ ở xa thông qua giao thức HTTP
Chúng ta hãy thảo luận làm thế nào làm việc với socket để truyền dữ liệu giữa máy khách và máy chủ bằng cách sử dụng gói TCP hoặc UDP. Trong mỗi trường hợp chúng ta đã đưa ra giao thức truyền thơng. Ví dụ, ứng dụng quản lý chat được sử dụng một giao thức, đối tượng
ChatPacket được tạo ra thành các byte và gửi thông qua kết nối mạng. Trong ví dụ Remote Hello và UDPHello gửi một chuỗi qua lại.
Có rất nhiều máy chủ trên Internet, các máy chủ này có rất nhiều giao thức truyền thông, HTTP, các giao thức này được sử dụng trên WWW. Khi sử dụng giao thức HTTP, có rất nhiều qui tắc để làm thế nào máy khách liên lạc với máy chủ và làm thế nào để máy khách có thể địi hỏi bất kỳ lúc nào. Dữ liệu mà máy chủ HTTP trả về cho đến khi một thiết lập gói tin TCP, nhưng sự can thiệp thông qua tất cả thông tin liên kết giao thức là một công việc hết sức buồn tẻ. Một giao dịch cùng với máy chủ HTTP có cấu trúc như sau:
Bước 1: Máy khách kết nối với máy chủ HTTP. Bước 2: Máy chủ HTTP trả lời.
Bước 3: Máy khách yêu cầu dữ liệu bằng cách sử dụng GET hoặc yêu cầu vị trí dữ liệu
bằng cách sử dụng lệnh POST.
Bước 4: Máy chủ trả về thông tin yêu cầu và dễ dàng đưa ra mã lỗi nếu yêu cầu của máy
khách không thể thoả mãn. Ví dụ, mã lỗi phổ biến là 404 được trả về nếu máy khách cố gắng GET một file không tồn tại.
Bước 5: Bước 4 có số lần lặp tuỳ ý. Bước 6: Máy khách đóng kết nối.
Mỗi lần máy khách tạo yêu cầu hoặc máy chủ trả lời, một kết nối socket mới kết nối với máy chủ được tạo. Lớp HttpWebRequest được tổ chức tất cả quá trình xử lý phức tạp cùng với quá trình tác động đến máy chủ HTTP. HttpWebRequest có thể thao tác những thao tác sau:
• Khởi tạo một kết nối với máy chủ HTTP
• Nhận kết quả trả về từ máy chủ HTTP
• Trả về một dịng lưu trữ dữ liệu được máy chủ HTTP gửi trả về như là kết quả chúng ta yêu cầu.
Sử dụng HttpWebRequest
Để sử dụng lớp HttpWebRequest để download thông tin từ máy chủ HTTP, làm theo các bước sau:
Bước 1: Tạo một thể hiện của lớp Uri để chỉ địa chỉ (URL) của máy chủ Bước 2: Cài đặt một HttpWebRequest bằng cách sử dụng Uri của bước 1.
Bước 3: Yêu cầu HttpWebRequest trả về kết quả từ Web Server trong mẫu của lớp Stream.
Đoạn mã ví dụ về HttpWebRequest
Lớp HttpWebRequest làm giảm cơng việc phức tạp khi giao tiếp với máy chủ thông qua HTTP trong bốn bước trên.
Uri l_Uri = new Uri("http://www.myserver.com");
HttpWebRequest l_WebReq = (HttpWebRequest)WebRequest.Create(l_Uri); HttpWebResponse l_WebResponse =(HttpWebResponse)l_WebReq.GetResponse(); Stream l_responseStream = l_WebResponse.GetResponseStream();
StreamReader l_SReader = new StreamReader(l_responseStream); // Do something with l_SReader. For example, if you downloaded a // Web page, you could
// extract the HTML code that came in the response and paint it on // the screen.