উত্তর:
ওয়েবক্লিয়েন্ট হ'ল 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();
ওয়েবক্লিয়েন্টের সাহায্যে আপনি কেবল এটি করেন DownloadString
:
var client = new WebClient();
var content = client.DownloadString("http://example.com");
দ্রষ্টব্য: আমি using
সংক্ষিপ্ততার জন্য দুটি উদাহরণের বিবৃতিগুলি রেখেছি । আপনার ওয়েব অনুরোধের জিনিসগুলি সঠিকভাবে নিষ্পত্তি করার জন্য আপনার অবশ্যই যত্ন নেওয়া উচিত।
সাধারণভাবে, ওয়েবক্লিয়েন্ট দ্রুত এবং নোংরা সহজ অনুরোধগুলির জন্য ভাল এবং যখন আপনাকে সম্পূর্ণ অনুরোধের উপর আরও নিয়ন্ত্রণের প্রয়োজন হয় তখন HTTPWebRequest ভাল।
HttpClient
যে .NET 4.5 দিয়ে আসে যে হতে পারে (? বা নাও হতে পারে) উপরে ঝামেলা কিছু সমাধান ...
using (WebClient client = new 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.DownloadString
বিবেচনা করবেন না encoding
। সুতরাং, যদি আপনি নির্দিষ্ট করে এবং এনকোডিং না করেন তবে আপনি সম্ভবত অদ্ভুত অক্ষরগুলি গ্রহণ করবেন।
দ্রষ্টব্য: মূলত " ওয়েবক্লিয়েন্ট ওয়েডব্রোয়েস্টের তুলনায় কোডের কয়েকটি লাইন গ্রহণ করে "
webClient.UploadData(url, "POST", bytes)
পদ্ধতিটি নির্দিষ্ট করতে ব্যবহার করতে সক্ষম হয়েছি ( এমএসডিএন ডক্স দেখুন )।
ServicePointManager.Expect100Continue = false
, অন্যান্য অ-মানক কাজ করে এবং অনেকগুলি ক্রিকস এবং আইডিয়োসিক্রাইস থাকে। এই সমস্যাগুলি সমাধানে সহায়তার জন্য আমি রেস্টশার্প শুরু করেছি।