iOS تحقق مما إذا كان الملف البعيد يحتوي على تحديثات قبل التنزيل

StackOverflow https://stackoverflow.com//questions/23014900

سؤال

هذا سؤال من قسمين.أنا أستخدم NSXMLParser لتنزيل موجز RSS.

NSURL *url = [NSURL URLWithString:@"linktorssxml"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];

تساءلت عما إذا كانت هناك طريقة لقراءة رأس ملف XML عن بعد والتحقق من الطابع الزمني للتحديث الأخير، بحيث أحتاج فقط إلى تشغيل كود المحلل اللغوي وسحب ملف XML بالكامل إذا كان هناك تغيير؟

علاوة على ذلك، كما قلت، هذا سؤال من جزأين.لدي نفس الفكرة مع قائمة مستضافة خارجيًا.وهذا ما يسمى حاليا على النحو التالي:-

_content = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"pathto.plist"]];

مرة أخرى، هل هناك طريقة للتحقق من رأس وقت التحديث الأخير عن بعد، وبالتالي تنزيل الملف الكامل فقط في حالة حدوث تغيير؟

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

المحلول

نعم، ولكن عليك أن تستخدم NSURLConnection أو NSURLSession لتحميل البيانات بدلا من السؤال NSXMLParser للقيام بذلك نيابة عنك.

يمكنك الحصول على رؤوس HTTP (والتي ربما تتضمن تاريخ آخر تعديل) باستخدام ملف NSMutableURLRequest لوصف ما تريد.لديها طريقة اسمها setHTTPMethod:, ، ويمكنك ضبط الطريقة على HEAD.قم بإجراء الاتصال، واحصل على الرؤوس، وقرر ما يجب فعله بعد ذلك.

ما لم يكن XML كبيرًا جدًا، فمن المحتمل ألا يكون هذا هو الأسلوب الأكثر فعالية.إذا تم تعديل الملف، فستحتاج فقط إلى تقديم طلب شبكة ثانٍ للحصول عليه.طلبات الشبكة بطيئة، لذا يجب عليك الاحتفاظ بها عند الحد الأدنى.في معظم الحالات، سيكون من الأفضل استخدام NSURLConnection أو NSURLSession للحصول على الملف فقط.ستتضمن الاستجابة رؤوس HTTP، لذلك لا يزال بإمكانك الحصول على التاريخ، ولا يزال بإمكانك تحديد ما إذا كنت تريد تشغيل المحلل اللغوي أم لا.

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