L'analyse de XML à partir d'une URL HTTPS à l'aide de NSXMLParser?
Je suis en train d'essayer de parser XML directement à partir d'une URL HTTPS, comme suit:
NSString *const URL = @"https://some/HTTPS/url";
NSURL* url = [NSURL URLWithString:URL];
NSXMLParser* parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser parse];
J'ai le délégué suivant la méthode de l'analyseur:
- (void) parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
NSLog(@"Started parsing %@", elementName);
}
Cela semble bien fonctionner pour les URL HTTP, mais ne montre aucun résultat pour une URL HTTPS.
Comment pourrais-je résoudre ce problème?
OriginalL'auteur PlagueHammer | 2009-01-07
Vous devez vous connecter pour publier un commentaire.
Aucun des initWithContentsOfURL:... méthodes vous permettra de répondre à l'authentification de message à partir d'un serveur https. Alors regardez NSURLConnection et NSURLDownload qui ont délégué des messages qui vous aident à gérer l'authentification.
Pour en savoir plus sur l'utilisation de l'URL pour communiquer avec les serveurs de lire Introduction à l'URL de Chargement du Système.
Aussi loin que l'analyse de code HTML avec un analyseur XML, il ne fera que de manière fiable travailler avec XHTML. Donc si vous êtes à la création et l'analyse de vos propres fichiers XHTML qui devrait fonctionner dans la plupart des cas. Mais si vous êtes de charger un fichier HTML à partir d'internet, puis l'analyseur XML souvent de ne pas être en mesure d'analyser le fichier. Vous pouvez regarder la WebKit.
OriginalL'auteur Nathan Kinsinger
Vous devez utiliser NSURLConnection pour télécharger les données XML et ensuite d'analyser la production plutôt qu'à l'aide d'-initWithContentsOfURL:.
NSURLConnection est plus robuste et permet aussi d'en faire l'extraction asynchrone qui vous devez certainement être en train de faire, -initWithContentsOfURL: va bloquer le thread principal.
OriginalL'auteur Rob Keniger
Aussi, la plupart des serveurs HTTPS vérifier la chaîne de l'Agent Utilisateur et ne jouent pas bien quand aucune valeur d'en-tête est spécifié. Il est certainement utile d'avoir certains (valide) chaîne de l'Agent Utilisateur dans la requête d'url.
OriginalL'auteur PlagueHammer
Je ne suis pas sûr que si tu fais de la programmation iPhone ou pas, mais pour l'enregistrement, dans le NSXMLParser Classe de Référence (dans l'iPhone 3.0 bêta 2 SDK), initWithContentsOfURL:(NSURL *)url ne PAS semble être obsolète.
OriginalL'auteur sandover