2011-10-07 48 views
22

Tôi muốn thực hiện cuộc gọi HTTP đến một trang web. Tôi chỉ cần nhấn URL và không muốn tải lên hoặc tải xuống bất kỳ dữ liệu nào. Cách dễ nhất và nhanh nhất để làm điều đó là gì.C# - Cách thực hiện cuộc gọi HTTP

tôi đã cố gắng bên dưới mã nhưng yêu cầu lặp đi lặp lại 2 chậm và sau của nó chỉ đi vào thời gian chờ cho 59 secounds và hơn resume:

WebRequest webRequest = WebRequest.Create("http://ussbazesspre004:9002/DREADD?" + fileName); 
webRequest.Method = "POST"; 
webRequest.ContentType = "application/x-www-form-urlencoded"; 
webRequest.ContentLength = fileName.Length; 

Stream os = webRequest.GetRequestStream(); 
os.Write(buffer, 0, buffer.Length); 
os.Close(); 

Đang sử dụng WebClient hiệu quả hơn ??

WebClient web = new WebClient(); 
web.UploadString(address); 

Tôi đang sử dụng NET ver 3.5

+0

"Sử dụng WebClient có hiệu quả hơn không?" Điều gì khiến bạn không thể thử? –

Trả lời

40

Bạn có một số nội dung bổ sung trong đó nếu bạn thực sự chỉ đang cố gọi một trang web. Tất cả những gì bạn cần là:

WebRequest webRequest = WebRequest.Create("http://ussbazesspre004:9002/DREADD?" + fileName); 
WebResponse webResp = webRequest.GetResponse(); 

Nếu bạn không muốn chờ phản hồi, bạn có thể xem BeginGetResponse để làm cho nó không đồng bộ.

9

Nếu bạn không muốn tải lên bất kỳ dữ liệu bạn nên sử dụng:

webRequest.Method = "GET"; 

Nếu bạn thực sự không quan tâm đến nhận được bất kỳ dữ liệu trở lại (ví dụ: nếu bạn chỉ muốn kiểm tra xem trang có sẵn) sử dụng:

webRequest.Method = "HEAD"; 

Trong cả hai trường hợp, thay vào đó của webRequest.GetRequestStream() sử dụng:

WebResponse myWebResponse = webRequest.GetResponse(); 
5

WebClient là một cú pháp ngắn hơn và ngắn gọn hơn nhưng đằng sau hậu trường nó sử dụng một WebRequest, vì vậy về hiệu suất nó sẽ không được nhanh hơn, nó sẽ tương đương. Nếu bạn muốn nó được nhanh hơn, bạn sẽ phải cải thiện kịch bản phía máy chủ hoặc cơ sở hạ tầng mạng của bạn. Vấn đề không phải là ở phía khách hàng.

+1

Một phương tiện bổ sung để đạt được hiệu suất cao hơn là sử dụng phương thức HTTP 'HEAD', đặc biệt nếu tệp được yêu cầu lớn. Tuy nhiên, tôi đoán là vấn đề thực sự nằm ở nơi khác. –

Các vấn đề liên quan