2010-08-24 1 views
5

J'ai une application où le code html/javascript exécute bien dans un safari navigateur autonome, mais quand les appels ajax sont exécutés dans PhoneGap, ils ont tous échouer avec l'erreur réseau 101.Est-ce que PhoneGap prend en charge les requêtes ajax HTTPS?

Je demande des documents XML

+1

AFAIK PhoneGap peut prendre en charge les requêtes HTTPS mais beaucoup ont rencontré des problèmes avec des certificats auto-signés. Est-ce iPhone ou Android que vous utilisez avec PhoneGap? – irishbuzz

Répondre

6

Oui. MAIS, il ne gère pas correctement les erreurs de certificat avec le protocole HTTPS. Je fini par écrire mon propre code pour établir la connexion initiale avec le serveur et ignorer les erreurs de cert

ici est le code http://blog.clearlyinnovative.com/post/1012434483/phonegap-and-iphone-development

+1

Est-ce que cela existe encore? Il 404 –

+0

Bien que ce lien peut répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et fournir le lien pour référence. Les réponses liées au lien peuvent devenir invalides si la page liée change – John

1

Phonegap ne supporte HTTPS ajax demandes, mais comme Aaron mentionne ne traite pas avec élégance erreurs de certificat. Dans mon cas, nous avons des certificats valides dans notre environnement de production; mais pour notre environnement de développement, nous allons le modifier l'une des méthodes NSURL:

@implementation NSURLRequest (IgnoreSSL) 

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host 
{ 
    return YES; 
} 

@end 

Cela a été testé avec PhoneGap 1.7 (et 1.9) et il a bien fonctionné. Vous pouvez mettre ce code dans votre MainViewController.m.

Notez que je recommande ce code uniquement pour l'environnement de développement. Cela ne sera probablement pas accepté par le magasin d'applications. puisque nous dépassons une api privée. Utilisez simplement des certificats valides en production.

+0

Cela ne fonctionne pas avec Cordova 1.5 et Xcode 4 (la méthode allowAnyHTTPSCertificateForHost n'est jamais appelée) –

+0

J'utilise toujours ce code dans mon environnement (notez que je cours Cordove 1.9 maintenant). Il y a donc une chance que cela ne fonctionne pas avec Cordova 1.5; mais de rapidement jeter un coup d'œil sur les forums de discussion sur les pommes; Cela a été soutenu pendant un certain temps. Assurez-vous juste de le mettre au-dessus de votre "@implementation MainViewController". – Aki

Questions connexes