WebClient adalah abstraksi tingkat tinggi yang dibangun di atas HttpWebRequest untuk menyederhanakan tugas yang paling umum. Misalnya, jika Anda ingin mendapatkan konten dari HttpWebResponse, Anda harus membaca dari aliran respons:
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();
Dengan WebClient, Anda cukup melakukan DownloadString
:
var client = new WebClient();
var content = client.DownloadString("http://example.com");
Catatan: Saya meninggalkan using
pernyataan dari kedua contoh untuk singkatnya. Anda harus berhati-hati untuk membuang objek permintaan web dengan benar.
Secara umum, WebClient baik untuk permintaan sederhana cepat dan kotor dan HttpWebRequest bagus untuk ketika Anda membutuhkan kontrol lebih besar atas seluruh permintaan.
ServicePointManager.Expect100Continue = false
, melakukan hal-hal non-standar lainnya dan memiliki banyak keanehan dan kekhasan. Saya mulai RestSharp untuk membantu mengatasi masalah-masalah itu.HttpClient
yang datang dengan .NET 4.5 yang mungkin (atau mungkin tidak?) Menyelesaikan beberapa kerepotan di atas ...using (WebClient client = new WebClient())
Juga WebClient tidak memiliki properti batas waktu. Dan itu masalahnya, karena nilai dafault adalah 100 detik dan itu terlalu banyak untuk menunjukkan jika tidak ada koneksi internet.
Solusi untuk masalah itu ada di sini https://stackoverflow.com/a/3052637/1303422
sumber
Saya tahu terlalu lama untuk menjawab tetapi hanya sebagai tujuan informasi untuk pembaca masa depan:
WebRequest
Ini
WebRequest
adalah kelas dasar abstrak. Jadi Anda sebenarnya tidak menggunakannya secara langsung. Anda menggunakannya melalui kelas turunannya -HttpWebRequest
danFileWebRequest
.Anda menggunakan metode Buat
WebRequest
untuk membuat turunan dariWebRequest
.GetResponseStream
kembalidata stream
.Ada juga
FileWebRequest
danFtpWebRequest
kelas yanginherit
dariWebRequest
. Biasanya, Anda akan menggunakanWebRequest
untuk, baik, membuat permintaan dan mengonversi pengembalian menjadiHttpWebRequest
,FileWebRequest
atauFtpWebRequest
, tergantung pada permintaan Anda. Di bawah ini adalah contohnya:Contoh:
WebClient
WebClient
menyediakan operasi umum kesending
danreceiving
data dari sumber daya yang diidentifikasi oleh aURI
. Sederhananya, ini adalah abstraksi level yang lebih tinggiHttpWebRequest
. 'Operasi umum' ini adalah yang membedakanWebClient
dariHttpWebRequest
, seperti juga ditunjukkan dalam sampel di bawah ini:Contoh:
Ada juga
DownloadData
danDownloadFile
operasi dalamWebClient
contoh. Operasi umum ini juga menyederhanakan kode dari apa yang biasanya kita lakukanHttpWebRequest
. Dengan menggunakanHttpWebRequest
, kita harus mendapatkan respons dari permintaan kita, instantiateStreamReader
untuk membaca respons dan akhirnya, mengubah hasilnya menjadi tipe apa pun yang kita harapkan. DenganWebClient
, kami cukup meneleponDownloadData, DownloadFile or DownloadString
.Namun, perlu diingat bahwa
WebClient.DownloadString
tidak mempertimbangkanencoding
sumber daya yang Anda minta. Jadi, Anda mungkin pada akhirnya akan menerima karakter aneh jika Anda tidak menentukan dan menyandikan.CATATAN: Pada dasarnya " WebClient mengambil beberapa baris kode dibandingkan dengan Webrequest "
sumber
webClient.UploadData(url, "POST", bytes)
untuk menentukan metode (lihat dokumen MSDN ).