Không gian tên System.Web

Một phần của tài liệu LẬP TRÌNH MẠNG NGHỀ: QUẢN TRỊ MẠNG MÁY TÍNH (Trang 65 - 68)

2. HTTP

2.4. Không gian tên System.Web

Một trong những ứng dụng phổ biến nhất của HTTP trong các ứng dụng là khả năngđể tải nội dung HTML của một trang thành một chuỗi.Ứng dụng sau đây chứng minh khái niệm này.

Đó chắc chắn là có thể thực hiện HTTP ở cấp ổ cắm, nhưng có là một sự giàu có của các đối tượng sẵn sàng cho sử dụng trong các ứng dụng

của Client HTTP, và nó làm cho cảm giác ít để phát minh lại bánh xe. Các máy

HTTPWebReqest.

Bắt đầu một dự án mới trong Visual Studio. NET, và kéo trên hai textbox, tbResult và tbUrl. TbResults nên được thiết lập với multiline = true.

Một nút, btnCapture cũng nên được thêm vào.

Nhấp vào nút Capture, và nhập vào sau code:

privatevoid btnCapture_Click(object sender, EventArgs e) {

tbResult.Text = getHTTP(tbUrl.Text); }

Xây dựng hàm getHTTP private string getHTTP(string szURL) {

HttpWebRequest httpRequest; HttpWebResponse httpResponse; string bodyText = "";

Stream responseStream;

Byte[] RecvBytes = new Byte[Byte.MaxValue]; Int32 bytes;

httpRequest = (HttpWebRequest)WebRequest.Create(szURL); httpResponse = (HttpWebResponse)httpRequest.GetResponse(); responseStream = httpResponse.GetResponseStream();

while (true) {

bytes = responseStream.Read(RecvBytes, 0, RecvBytes.Length); if (bytes <= 0) break;

bodyText += System.Text.Encoding.UTF8.GetString(RecvBytes, 0, bytes); }

return bodyText; }

Để có một cái nhìn gần hơn vào mã này, nó cần được tương đối dễ dàng

để xác định làm thế nào nó hoạt động. Hành động đầu tiên được thực hiện khi

mã này được thực hiện là một phương pháp tĩnh trên lớp WebRequest được gọi

và thông qua các szURL chuỗi như một tham số. Điều này tạo ra một đối tượng

WebRequest có thể được đúc vào một đối tượng HttpWebRequest, sẽ xử lý các

kết nối HTTP đi.

Một khi chúng ta có một đối tượng HttpWebRequest, sau đó chúng tôi có

thể gửi yêu cầu HTTP đến máy chủ và bắt đầu nhận dữ liệu từ máy chủ bằng

cách gọi phương thức GetResponse. Giá trị trả lại sau đó bỏ một đối tượngHttpWebResponse, mà sau đó được tổ chức tại biến HttpResponse.

Một phản ứng từ một máy chủ Web là không đồng bộ của tự nhiên, do đó,

nó là tự nhiên để tạo ra một dòng từ dữ liệu này trở về và đọc nó trong khi nó trở

nên có sẵn. Để làm điều này, chúng ta có thể tạo ra một dòng bằng cách gọi phương thức GetResponseStream. Một khi dòng thu được, chúng ta có thể đọc

byte từ nó trong khối 256 byte (byte.Max). Đọc dữ liệu trong khối cải thiện hiệu

suất. Kích thước đoạn có thể được tự ý lựa chọn, nhưng 256 là hiệu quả.

Mã này nằm trong một vòng lặp vô hạn cho đến khi tất cả các dữ liệu đến nhận được. Trong một môi trường sản xuất, do đó, loại hành động này

nên được chứa trong một chủ đề riêng biệt. Một khi chúng ta có một chuỗi chứa

tất cả của HTML, chúng tôi chỉ đơn giản là có thể đổ nó vào màn hình. Không có chế biến khác yêu cầu. Bạn cũng sẽ cần một số phụ không gian tên:

private void btnCapture_Click(object sender, EventArgs e) {

tbPost.Text = HttpUtility.UrlEncode(tbPost.Text);

tbResult.Text = getHTTP(tbUrl.Text, "tbPost=" + tbPost.Text); }

public string getHTTP(string szURL, string szPost) { HttpWebRequest httprequest; HttpWebResponse httpresponse; StreamReader bodyreader; string bodytext = ""; Stream responsestream; Stream requestStream;

httprequest = (HttpWebRequest)WebRequest.Create(szURL); httprequest.Method = "POST";

httprequest.ContentType = "application/x-www-form-urlencoded"; httprequest.ContentLength = szPost.Length;

requestStream = httprequest.GetRequestStream();

requestStream.Write(Encoding.ASCII.GetBytes(szPost), 0, szPost.Length); requestStream.Close();

httpresponse = (HttpWebResponse)httprequest.GetResponse(); responsestream = httpresponse.GetResponseStream();

bodyreader = new StreamReader(responsestream); bodytext = bodyreader.ReadToEnd();

return bodytext; }

Một phần của tài liệu LẬP TRÌNH MẠNG NGHỀ: QUẢN TRỊ MẠNG MÁY TÍNH (Trang 65 - 68)

Tải bản đầy đủ (PDF)

(121 trang)