2010-08-24 27 views
5

Tengo una aplicación donde el html/javascript código se ejecuta bien en un safari navegador independiente, pero cuando las llamadas ajax se ejecutan en PhoneGap, todos ellos con el error de red 101.¿PhoneGap es compatible con las solicitudes HTTPS ajax?

estoy solicitando documentos XML

+1

AFAIK PhoneGap puede admitir solicitudes HTTPS, pero muchas han tenido problemas con los certificados autofirmados. ¿Se está ejecutando iPhone o Android con PhoneGap? – irishbuzz

Respuesta

6

Sí.

PERO no maneja correctamente los errores de certificado con el protocolo HTTPS. Terminé de escribir mi propio código para establecer la conexión inicial con el servidor y pasar por alto los errores CERT

Aquí está el código http://blog.clearlyinnovative.com/post/1012434483/phonegap-and-iphone-development

+1

¿Esto todavía existe? Es 404 –

+0

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas solo de enlace pueden dejar de ser válidas si la página vinculada cambia – John

1

Phonegap no ser compatible con HTTPS ajax peticiones, pero al igual que Aaron menciono no maneja con gracia errores de certificado En mi caso, tenemos certs válidos en nuestro entorno de producción; pero para nuestro entorno de desarrollo sobreescrivimos uno de los métodos NSURL:

@implementation NSURLRequest (IgnoreSSL) 

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

@end 

Esto ha sido probado con PhoneGap 1.7 (y 1.9) y funcionó bien. Puede poner este código en su MainViewController.m.

Tenga en cuenta que recomiendo este código solo para el entorno de desarrollo. Lo más probable es que esto no sea aceptado por la tienda de aplicaciones; ya que estamos anulando una API privada. Solo use certs válidos en producción.

+0

No funciona con Cordova 1.5 y Xcode 4 (nunca se llama al método allowsAnyHTTPSCertificateForHost) –

+0

Todavía estoy usando este código en mi entorno (tenga en cuenta que me estoy ejecutando) Cordove 1.9 ahora). Entonces existe la posibilidad de que esto no funcione con Cordova 1.5; pero de echar un rápido vistazo a los paneles de debate de manzana; esto ha sido respaldado por bastante tiempo. Solo asegúrate de ponerlo encima de tu "@implementation MainViewController". – Aki

Cuestiones relacionadas