2009-02-23 40 views
8

Thực tiễn tốt nhất để nhận yêu cầu web không đồng bộ là gì?Các phương pháp hay nhất về Webrequest Webrequest

Tôi muốn tải xuống một trang từ internet (không quan trọng những gì) và tránh chặn một chuỗi càng nhiều càng tốt.

Trước đây tôi đã tin rằng chỉ đủ sử dụng cặp 'BeginGetResponse' và 'EndGetResponse'. Nhưng về kiểm tra chặt chẽ hơn Tôi cũng thấy rằng có tùy chọn sử dụng 'BeginGetRequestStream'

[UPDATE] GetRequestStream được sử dụng cho các hoạt động POST

Và sau đó để thêm vào sự nhầm lẫn, tôi có nên sử dụng dòng. BeginRead và EndRead?

[UPDATE]article điều này cho thấy nó thậm chí còn tốt hơn để xử lý các HttpResponse.GetResponseStream đồng bộ bằng Stream.BeginRead

Thật là một mớ hỗn độn!

Ai đó có thể chỉ cho tôi đúng hướng không?

Thực tiễn tốt nhất là gì?

Trả lời

0
  1. Bạn sử dụng Bắt đầu/EndGetResponse để asynchonously chờ đợi phản hồi HTTP. Nếu bạn đang thực hiện POST và cần gửi nhiều dữ liệu một cách không đồng bộ, hãy sử dụng Begin/EndGetRequestStream.

  2. Đây không phải là duy nhất cho giao tiếp không đồng bộ - bạn có thể tra cứu các phiên bản đồng bộ để nhận thêm thông tin.

  3. Tôi không chắc chắn lý do tại sao bạn sẽ thực hiện Đọc trên luồng yêu cầu - rất có thể bạn sẽ ghi vào luồng yêu cầu và đọc từ luồng Trả lời.

Cuối cùng, Jeffrey Richter's blog có một bài viết về một số sự tinh tế của HttpWebRequest và luồng.

+0

vâng tôi nghĩ rằng tôi đã nhầm lẫn với mục đích 'BeginGetRequestStream' –

5

Bạn có thể mã hóa tất cả điều này cho bản thân hoặc bạn chỉ có thể sử dụng WebClient mà hiện rất nhiều các công việc khó khăn cho bạn. Ví dụ: để tải xuống tệp dưới dạng chuỗi bạn sẽ gọi là DownloadStringAsync() và cuối cùng sẽ kích hoạt sự kiện OnDowloadStringCompleted. Nếu tệp là nhị phân, bạn có thể thử sử dụng DownloadDataAsync() thay thế.

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