जवाबों:
WebClient सबसे आम कार्यों को सरल बनाने के लिए HttpWebRequest के शीर्ष पर निर्मित एक उच्च-स्तरीय अमूर्त है। उदाहरण के लिए, यदि आप HttpWebResponse से सामग्री प्राप्त करना चाहते हैं, तो आपको प्रतिक्रिया स्ट्रीम से पढ़ना होगा:
var http = (HttpWebRequest)WebRequest.Create("http://example.com");
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
WebClient के साथ, आप बस करते हैं DownloadString:
var client = new WebClient();
var content = client.DownloadString("http://example.com");
नोट: मैंने usingसंक्षिप्तता के लिए दोनों उदाहरणों से बयानों को छोड़ दिया । आपको अपने वेब अनुरोध ऑब्जेक्ट को ठीक से निपटाने के लिए निश्चित रूप से ध्यान रखना चाहिए।
सामान्य तौर पर, WebClient त्वरित और गंदे सरल अनुरोधों के लिए अच्छा है और HttpWebRequest तब अच्छा होता है जब आपको पूरे अनुरोध पर अधिक नियंत्रण की आवश्यकता होती है।
HttpClientकि .NET 4.5 के साथ आने वाले क्षेत्र पर एक नया खिलाड़ी है जो उपरोक्त कुछ बाधाओं को हल कर सकता है या नहीं?)
using (WebClient client = new WebClient())
इसके अलावा WebClient के पास टाइमआउट प्रॉपर्टी नहीं है। और यही समस्या है, क्योंकि डैफॉल्ट मान 100 सेकंड है और यह इंगित करने के लिए बहुत अधिक है कि क्या कोई इंटरनेट कनेक्शन नहीं है।
उस समस्या के लिए समाधान यहां https://stackoverflow.com/a/3052637/1303422 है
मैं इसका उत्तर लंबे समय से जानता हूं लेकिन भविष्य के पाठकों के लिए सूचना के उद्देश्य के रूप में:
WebRequest
System.Object
System.MarshalByRefObject
System.Net.WebRequest
WebRequestएक सार आधार वर्ग है। तो आप वास्तव में इसे सीधे उपयोग नहीं करते हैं। आप इसका उपयोग व्युत्पन्न वर्गों के माध्यम से करते हैं - HttpWebRequestऔर FileWebRequest।
आप का WebRequestएक उदाहरण बनाने के लिए बनाएँ विधि का उपयोग करें WebRequest। GetResponseStreamलौटता है data stream।
FileWebRequestऔर भी हैंFtpWebRequest वर्गों है कि inheritसे WebRequest। आम तौर पर, आप उपयोग WebRequestकरते हैं, ठीक है, एक अनुरोध करते हैं और वापसी को या तो परिवर्तित करते हैं HttpWebRequest, FileWebRequestया FtpWebRequest, आपके अनुरोध पर निर्भर करते हैं। नीचे एक उदाहरण है:
उदाहरण:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();
WebClient
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient
WebClientएक द्वारा पहचाने गए संसाधन से आम संचालन sendingऔर receivingडेटा प्रदान करता हैURI । बस, यह एक उच्च-स्तरीय अमूर्तता है HttpWebRequest। यह 'सामान्य संचालन' वही है, जो इससे अलग WebClientहै HttpWebRequest, जैसा कि नीचे दिए गए नमूने में दिखाया गया है:
उदाहरण:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");
उदाहरण के लिए ऑपरेशन DownloadDataऔर DownloadFileऑपरेशन भी हैं WebClient। ये सामान्य ऑपरेशन उस कोड को भी सरल बनाते हैं जो हम सामान्य रूप से करते हैं HttpWebRequest। का उपयोग करते हुएHttpWebRequest , हमें अपने अनुरोध की प्रतिक्रिया प्राप्त करनी है, प्रतिक्रिया StreamReaderको पढ़ने के लिए तुरंत और आखिरकार, हम जो भी उम्मीद करते हैं उसका परिणाम परिवर्तित करें। के साथ WebClient, हम बस फोन करते हैं DownloadData, DownloadFile or DownloadString।
हालांकि, ध्यान रखें कि WebClient.DownloadStringencoding आपके द्वारा अनुरोधित संसाधन पर विचार न करें । यदि आप निर्दिष्ट नहीं करते हैं और एन्कोडिंग करते हैं, तो आप शायद अजीब अक्षर प्राप्त करेंगे।
नोट: मूल रूप से " WebClient Webrequest की तुलना में कोड की कुछ लाइनें लेता है "
webClient.UploadData(url, "POST", bytes)विधि निर्दिष्ट करने के लिए ( MSDN डॉक्स देखें ) का उपयोग करने में सक्षम था ।
ServicePointManager.Expect100Continue = false, अन्य गैर-मानक चीजें करते हैं और कई quirks और idiosyncrasies होते हैं। मैंने उन समस्याओं को दूर करने में मदद करने के लिए रेस्टर्शप शुरू किया।