لماذا لا يوجد فئة NSHTPURLPROTOCOL؟
-
22-09-2019 - |
سؤال
نحن سوف، NSURLProtocol
هل عام جميل؟ إنه لتحديد جميع أنواع البروتوكولات ، أليس كذلك؟
فلماذا لا يوجد شيء مثل NSHTTPURLProtocol
؟ بدلاً من ذلك ، هناك فئة غير رسمية على Nsurlrequest مع أشياء HTTP محددة. لماذا فعلوا ذلك بهذه الطريقة؟ لماذا لا يوجد بروتوكول HTTP مخصص بدلاً من ذلك؟
ما هي الفكرة وراء وضع كل هذه الأشياء NSURLRequest
بدلا من في بروتوكول مخصص ل HTTP؟
من المؤكد أن HTTP غالبًا ما يتم استخدامه ، ولكن على أي حال: إنه أمر محير لفهم نظام تحميل عنوان URL بالكامل Cocoa/CocoaTouch
. الآن هناك وثيقة. يقول أحدهم: "قم بإنشاء مخصص NSURLProtocol
الفئة الفرعية لبروتوكولك الخاص ". يقول الآخر:" قم بإنشاء فئات غير رسمية مثل تلك الخاصة بأشياء HTTP على NSURLRequest
".
آمل أن يتمكن شخص لديه تفاهم عميق من توضيح ذلك ؛)
المحلول
الأسباب الجيدة العديدة:
لم تتمكن من الوصول إلى
NSURLProtocol
-Subclass التي تعمل على تشغيل الاتصال ؛ فقطNSURLConnection
اعترض نفسها. لذلك ، حتى لو تمت إضافة هذه الطرق إلى افتراضيةNSHTTPURLProtocol
الفصل ، كيف يمكنك الوصول إليهم؟NSURLConnection
يستخدم كائن الطلب لتحديد البروتوكول الذي سيتعامل معه. لذلك ، يجب معرفة جميع خصائص الطلب قبل إنشاء كائن البروتوكول. على سبيل المثال ، يمكنك إنشاء بروتوكول مخصص يتجاوز تطبيق HTTP الافتراضي ، ولكن فقط لبعض المضيفين.توفير جميع الإعدادات المقدمة هو الكثير من الإبلاغ. ماذا لو تمكنت من الوصول إلى كائن البروتوكول وتعيين الخصائص عليه في منتصف الحمل؟ كيف يجب أن تتعامل معهم - تجاهل أو استثناء أو محاولة ضبط؟