Domanda

La mia applicazione per iPhone è stata respinta solo per l'utilizzo del (molto sicuro, a quanto pare) Metodo +setAllowsAnyHTTPSCertificate:forHost: privato per NSURLRequest . C'è un'API non privato di emulare questa funzionalità?

È stato utile?

Soluzione

Altri suggerimenti

In realtà, sto testando con 10.6.8 e questo codice funziona ancora - che sta utilizzando l'API private, ma controllando che il selettore esiste (myurl è il NSURL che sto cercando di caricare in una WebView o un NSURLConnection):

SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ( [NSURLRequest respondsToSelector: selx] )
{
    IMP fp;

    fp = [NSURLRequest methodForSelector:selx];

    (fp)([NSURLRequest class], selx, YES, [myurl host]);
}

Si noti che "@selector" non è stato utilizzato in modo che assolutamente tutti il lavoro sarebbe fatto in fase di esecuzione. Questo lo rende circa come sicuro e come nascosti dai controlli di Apple come può essere, soprattutto se si oscurare la stringa.

Una soluzione veramente stupido è quello di rendere il proprio metodo categoria:

@implementation NSURLRequest (IgnoreSSL)

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

@end

Questo dovrebbe ottenere mediante controlli API private di Apple, ma è ancora la stessa cosa (usando un privato API non documentate [1] che rischia di rompersi in qualsiasi momento). In realtà, è peggio in quanto permette tutto, non solo tale host.

[1]:. Un'API privata che dovrebbe essere reso pubblico, ma un privato API, tuttavia,

setAllowsAnyHTTPSCertificate sembra essere ora supportato in OS X 10.6.6 del tutto.

Ho detto 10.6.6? Forse avrei dovuto dire "Snow Vista".

Non è una soluzione, ma un suggerimento. Avete pensato di usare ASIHttpRequest quadro per questo? Questo quadro è completo in tutti gli aspetti. Controllare la documentazione, forse può aiutare anche te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top