Impossible de lire le fichier XML
-
22-09-2019 - |
Question
a obtenu un petit problème avec la réception du contenu d'un fichier xml (en utilisant TouchXML).
Ma première requête fonctionne très bien, ressemble à ceci:
NSString *url = [NSString stringWithFormat:STATION_ID, latitude, longtitude];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@",rssParser);
ce journal me donne le fichier XML complet.
après que, dans une autre méthode im essayant même:
NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@", rssParser);
mais im journal est d'obtenir (null). Loggin la chaîne URL me donne l'URL à droite sans espaces ou quelque chose, l'URL Log par exemple ressemble à ceci:
NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
NSLog(@"%@", url);
Le résultat dans la console de débogage est
http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASUNNY19
regardant ce fichier avec mon navigateur semble être ok. Tout le monde sait ce qui se passe mal ?????
J'ai aussi essayé, d'abord pour obtenir le contenu de cette URL par stringWithContentsOfURL, mais pas non plus travaillé.
La solution
Ce mec a le même problème: http : //www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html. On dirait que l'API à Weather Underground attend un agent utilisateur et renvoyer une réponse HTTP 500 quand il ne voit pas. Vous pouvez utiliser -initWithData:options:error:
sur CXMLDocument pour passer les données que vous obtenez en utilisant NSMutableURLRequest.
Autres conseils
Vous devriez essayer d'utiliser l'argument d'erreur de initWithContentsOfURL: Options: erreur :. Créer un objet NSError *, et le transmettre dans thusly:
NSError *error;
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error: &error];
Si vous ne recevez pas un objet RSSParser, vérifiez que l'erreur.
i copié le contenu de ce fichier xml à mon propre serveur et changé le chemin d'URL. cela fonctionne correcty, donc je pense qu'il ya un problème avec la lecture de ce fichier « .asp ».
hmm. mais son contenu XML, étrange.
// edit: je l'ai fait un petit fichier php sur mon serveur qui retourne le contenu du fichier « asp »:
<?php
echo file_get_contents("http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASANFR70");
?>
lire le contenu des œuvres de mon script, mais cette solution de contournement n'est pas ce que je veux.
oh putain = /
Êtes-vous sûr que votre chaîne d'URL est correctement codé, de sorte que le point d'interrogation est interprété comme une requête? Vous voudrez peut-être envisager d'utiliser dataUsingEncoding
ou stringUsingEncoding
sur votre URL avant de l'utiliser pour initialiser rssReader
.