طلب ASIHTTP:استقبال المفوضين من عدة طلبات ضمن قائمة انتظار الشبكة
-
20-08-2019 - |
سؤال
أستخدم ASINetworkQueue لإرسال طلبين موجودين في قائمة الانتظار.مشكلتي هي أنني غير قادر على تلقي الإخطارات عند فشل الطلب/يتم.
شفرة:
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
[networkQueue setUploadProgressDelegate:self.progressIndicator];
[networkQueue setDelegate:self];
[networkQueue setQueueDidFinishSelector:@selector(queueDidFinish)];
NSURL *urlAttachment = [NSURL URLWithString:@"http://localhost/test1.xml"]];
ASIFormDataRequest *requestFile = [[[ASIFormDataRequest alloc] initWithURL:urlAttachment] autorelease];
[requestFile setFile:filePath forKey:@"attachment[test]"];
[requestFile setDidFailSelector:@selector(test1WentWrong)];
[requestFile setDidFinishSelector:@selector(test1Done)];
[networkQueue addOperation:requestFile]; //queue is an NSOperationQueue
NSURL *url = [NSURL URLWithString:@"http://localhost/test2.xml"]];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:test.filename forKey:@"filename[test]" ];
[request setDidFailSelector:@selector(test2WentWrong)];
[request setDidFinishSelector:@selector(test2Done)];
[networkQueue addOperation:request]; //queue is an NSOperationQueue
[networkQueue go];
test1WentWrong، test1Done، test2WentWrong، test2Done لا يتم استدعاؤها.على الرغم من أن الطلب يعمل بشكل جيد ويتم استدعاء queueDidFinish.
المحلول
تحتاج إلى تعيين مندوب للطلبات الفردية بدلاً من قائمة الانتظار.
بشكل أساسي، إذا قمت بتعيين محددات didFinish وdidFail في قائمة الانتظار، فسيتم استدعاء مفوض قائمة الانتظار.إذا قمت بتعيينهما على الطلب، فسيتم استدعاء مندوب الطلب (يمكنك أيضًا القيام بالأمرين معًا، وفي هذه الحالة يتم استدعاء كليهما).
في حالتك، حيث تريد استخدام نفس المفوض لكلا الطلبين، ولكن محددات مختلفة لـ didFail / didFinish، أستطيع أن أرى أنه سيكون من المنطقي أن يتم استدعاء مفوض قائمة الانتظار إذا لم تقم بتعيين مفوض للطلب.ربما يجب أن أضيف هذا...:)
بن