كيف يمكنني اكتشاف استجابة HTTP، وتحليل XML وحفظها إلى NSstring؟

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

سؤال

لقد كنت أحاول معرفة ذلك لمدة أسابيع وما زلت لا أحصل على شيء. أنا أستخدم asihttprequest وأحدث بنجاح البيانات بنجاح إلى خادم والآن أحتاج إلى الحصول على استجابة XML، وتحليلها وحفظ العناصر لكل منها NSstring المسمى حتى أتمكن من نشره إلى الخادم. هل لدى أي شخص فكرة حول كيفية القيام بذلك؟

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

المحلول

من النظر إلى كيف تستعمل الصفحة، أعتقد أن ما تريد القيام به هو تطبيق الأساليب التي يمكن استدعاؤها عند اكتمال الطلب. على سبيل المثال، أقول أن لديك طريقة done: أنك تريد أن يتم استدعاؤها عند اكتمال طلبك. يمكنك تعيين هذه الطريقة كمحدد "الانتهاء" الخاص بك عند الطلب:

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setDelegate:self];
[request setDidFinishSelector:@selector(done:)];

ثم لاحقا، أنت تنفذ done: طريقة:

- (void)done:(ASIHTTPRequest *)request
{
   NSString *response = [request responseString];
}

كل هذا يفترض أنك ترسل الطلبات بشكل غير متزامن؛ إذا كنت تستخدم مكالمات متزامنة، يمكنك فقط استخدام responseString الممتلكات بناء على الطلب.

نصائح أخرى

احصل على نسخة من مكتبة XML لجهاز iPhone إذا كان لديك احتياجات تحليل XML تافهة.
لقد استخدمت Google GDATAXMLNODE لهذا من قبل، ولكن من المحتمل أن أستخدم kissxml للعمل في المستقبل، لأنه أقرب NSXML (مكتبة Apple التي لا تشحن من أجل iPhone لسوء الحظ).

إليك طريقة لتحليل الاستجابة، هنا أبحث عن أخطاء قد تراها عادة من خادم القضبان، على غرار:

  <errors><error>Description of what went wrong</error></errors>

يمكنك أن ترى أن أحصل على كائن "طلب" مرة أخرى من المكتبة، وأطعم سلسلة الاستجابة في GDATAXMLDocument.

   GDataXMLDocument* root = [[GDataXMLDocument alloc] initWithXMLString:[request responseString] options:0 error:nil];

   // Parse the error strings
   NSArray* errors = [root nodesForXPath:@"//errors/error" error:nil];

   // What is the first error string.... etc......
   NSString* firstError = [[errors objectAtIndex:0] stringValue];

يحتوي الصفيف المرتجع هنا على قائمة العقد التي تطابق هذا المسار في XML. إذا لم تكن معتادا على XPath، فليس من الصعب تعلمها، ومفيدة لسحب البيانات من استجابة XML. سيعود الاتصال StringValue مقابل العنصر الذي تم إرجاعه في الصفيف النص بين العناصر في المثال أعلاه.

يمكنك بالطبع ملء القاموس، وما إلى ذلك مع بيانات XML التي تم إرجاعها. منطقي؟

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