سؤال

حصلت على مشكلة صغيرة في تلقي محتويات ملف XML (باستخدام TouchXML).

استعلامي الأول يعمل بشكل جيد للغاية ، يبدو شيئًا كهذا:

NSString *url = [NSString stringWithFormat:STATION_ID, latitude, longtitude];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@",rssParser);

لذلك يعطيني هذا السجل ملف XML الكامل.

بعد ذلك ، في طريقة أخرى ، أحاول نفس الشيء:

NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@", rssParser);

لكن سجل IM يحصل عليه (فارغ). Loggin تعطيني سلسلة عنوان URL عنوان URL المناسب بدون مسافات أو شيء ما ، يبدو سجل عنوان URL على سبيل المثال هذا:

NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
NSLog(@"%@", url);

النتيجة في وحدة تحكم التصحيح

http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASUNNY19

يبدو أن النظر إلى هذا الملف مع متصفحي على ما يرام. أي شخص يعرف ما الذي يحدث ؟؟؟؟؟

لقد حاولت أيضًا ، أولاً الحصول على محتوى عنوان URL هذا بواسطة StringWithContentSofurl ، ولكن هذا لم ينجح أيضًا.

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

المحلول

كان هذا الرجل يواجه نفس المشكلة: http://www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html. يبدو أن واجهة برمجة التطبيقات في Weather Underground تتوقع وكيل المستخدم وإعادة استجابة 500 HTTP عندما لا ترى استجابة. يمكنك استخدام -initWithData:options:error: على CXMLDOCUMITY لتمرير البيانات التي تحصل عليها باستخدام NSMUTABLEURLREQUEST.

نصائح أخرى

يجب أن تحاول استخدام وسيطة الخطأ لـ initWithContentsofurl: الخيارات: خطأ:. قم بإنشاء كائن NSERROR *، ومرره بالتالي:

NSError      *error;
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error: &error];

إذا لم تحصل على كائن RSSParser ، فتحقق من هذا الخطأ.

قمت بنسخ محتوى ملف XML هذا إلى خادمي الخاص وتغيير مسار عنوان URL. هذا يعمل بشكل صحيح ، لذلك أعتقد أن هناك مشكلة في قراءة ملف ".asp".

همم. ولكن محتوى XML ، غريب.

// تحرير: لقد صنعت ملف PHP صغير على الخادم الخاص بي الذي يقوم بإرجاع محتوى ملف "ASP":

<?php
  echo file_get_contents("http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASANFR70");
 ?>

قراءة محتويات البرنامج النصي الخاص بي ، ولكن هذا الحل ليس ما أريد.

يا لعنة =/

هل أنت متأكد من أن سلسلة عنوان URL الخاص بك مشفرة بشكل صحيح ، بحيث يتم تفسير علامة الاستفهام على أنها استعلام؟ قد ترغب في النظر في استخدام dataUsingEncoding أو stringUsingEncoding على عنوان URL الخاص بك قبل استخدامه للتهيئة rssReader.

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