سؤال

يبدو لي أن معظم ما يمكن إنجازه به HttpWebRequest/Response يمكن أيضا أن يتحقق مع WebClient صف دراسي. قرأت في مكان ما WebClient هو المجمع رفيع المستوى ل WebRequest/Response.
حتى الآن، لا أستطيع أن أرى أي شيء يمكن إنجازه HttpWebRequest/Response التي لا يمكن إنجازها WebClient, ، كما أن HttpWebRequest / الاستجابة سيمنحك المزيد من التحكم "المحبوس".

متى يجب أن أستخدم WebClient ومتى HttpWebRequest/Responseب (بوضوح، HttpWebRequest/Response هي http الخاصة.)

إذا HttpWebRequest/Response هي مستوى أقل ثم WebClient, ، ماذا يمكنني إنجازه HttpWebRequest/Response أن لا أستطيع تحقيق مع WebClient?

هل كانت مفيدة؟

المحلول

استخدام HttpWebRequest يمنحك المزيد من التحكم في الطلب. يمكنك ضبط ملفات تعريف الارتباط والرؤوس والبروتوكول وما إلى ذلك ... في الاستجابة، يمكنك أيضا استرداد ملفات تعريف الارتباط والرؤوس

نصائح أخرى

HttpWebRequest تكشف الكثير من الأشياء التي تتيح لك التحكم في بروتوكول المحبوس بخير، على سبيل المثال: سواء كنت ترغب في استخدام الحفاظ على حيا، ما هو تجمع الاتصالات المراد استخدامه، ما إذا كان يجب أن يكتب المخزن المؤقت أم لا، إلخ.

WebClient لا يعرض كل هؤلاء (على الرغم من أنه يمكنك الفئة الفرعية من WebClient و getAccess إلى كائن الطلب الأساسي).

WebClient مفيد بالنسبة لتلك المواقف التي ترغب فيها فقط في إجراء عملية (على سبيل المثال: تحميل Post / Get / form) ولا يمكن إزعاجها لإنشاء وإدارة HttpWebRequest, RequestStream, HttpWebResponse, ودفق الاستجابة.

من بلوق تيم هايو http://timheuer.com/blog/archive/2008/03/14/calling-services-with-silverlight-2.aspx.

بدلا من ذلك في Silverlight، سترغب في استخدام WebClient أو httpWebRequest. ماهو الفرق؟ إليك نسخة timheuer. WebClient هو تطبيق أبسط يقوم بالحصول على طلبات بسهولة بسهولة والحصول على دفق الاستجابة. httpWebRequest هو عظيم عندما تحتاج إلى تحكم أكثر حبيبية قليلا على الطلب، تحتاج إلى إرسال رؤوس أو آخر التخصيصات.

ال العميل على شبكة الإنترنت يعمل Class على مؤشر ترابط واجهة المستخدم، لذلك لا تستجيب واجهة المستخدم أثناء تنزيل البيانات من الإنترنت. من ناحية أخرى، httpwebrequest. لا تمنع الطبقة موضوع واجهة المستخدم، وتطبيقك مستجيب. لذلك، في التطبيقات التي يتم فيها تنزيل كمية كبيرة من البيانات من الإنترنت أو إذا كان مصدر البيانات بطيئا للوصول، يجب عليك استخدام فئة HTTPWebRequest؛ في جميع الحالات الأخرى، يجب عليك استخدام فئة WebClient.

شيء آخر آخر httpwebrquest يسمح لك بالضغط ولكنه Net.WebClient فئة لا تدعم ضغط HTTP

عيب آخر ل WebClient هل يتجاهل HTTP ContentTypecharset القيمة عند استخدامها للحصول على نص الاستجابة. يجب عليك ضبط الترميز بشكل صريح عبر Encoding خاصية.

"htttpwebrequest" قديم في .NET 4.5. الآن، هذه الفئة الداخلية فقط.

مثال على ذلك: نشر البيانات واستعادة البيانات المعالجة في دورة طلب واحدة / استجابة يبدو مستحيلا مع WebClient، ولكن يمكنك القيام بذلك باستخدام HTTTPWebRequest.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top