لا يمكن قراءة ملف XML
-
22-09-2019 - |
سؤال
حصلت على مشكلة صغيرة في تلقي محتويات ملف 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
.