2010-08-24 13 views
5

Ho un'applicazione in cui il codice html/javascript codice viene eseguito bene in un safari del browser stand-alone, ma quando le chiamate Ajax sono eseguite in PhoneGap, tutti con l'errore di rete 101.PhoneGap supporta richieste ajax HTTPS?

sto chiedendo documenti XML

+1

AFAIK PhoneGap può supportare le richieste HTTPS ma molti hanno riscontrato problemi con i certificati autofirmati. È iPhone o Android che stai usando con PhoneGap? – irishbuzz

risposta

6

Sì.

MA, non gestisce correttamente gli errori di certificato con il protocollo HTTPS. Ho finito per scrivere il mio codice per stabilire la connessione iniziale con il server e ignorare gli errori cert

Ecco il codice http://blog.clearlyinnovative.com/post/1012434483/phonegap-and-iphone-development

+1

Esiste ancora? It 404's –

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte al solo collegamento possono diventare non valide se la pagina collegata cambia – John

1

PhoneGap non supporta HTTPS ajax richieste, ma, come Aaron accenno non gestisce con garbo errori del certificato. Nel mio caso, abbiamo certificati validi nel nostro ambiente di produzione; ma per il nostro ambiente dev andiamo a sovrascrivere uno dei metodi NSUrl:

@implementation NSURLRequest (IgnoreSSL) 

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

@end 

Questo è stato testato con PhoneGap 1.7 (e 1.9) e ha funzionato bene. Puoi inserire questo codice nel tuo MainViewController.m.

Si noti che raccomando questo codice solo per l'ambiente di sviluppo. Questo molto probabilmente non sarà accettato dall'app store; dal momento che stiamo ignorando una API privata. Basta usare certificati validi in produzione.

+0

Non funziona con Cordova 1.5 e Xcode 4 (il metodo allowAnyHTTPSCertificateForHost non viene mai chiamato) –

+0

Sto ancora usando questo codice nel mio ambiente, sto bene (notare che sto correndo Cordove 1.9 ora). Quindi c'è una possibilità che questo non funzioni con Cordova 1.5; ma da uno sguardo veloce alle tavole di discussione delle mele; questo è stato supportato per un po 'di tempo. Assicurati di averlo posizionato sopra il tuo "mainframeController @implementation". – Aki