Question

Mon application iPhone a été rejetée uniquement selon la méthode privée (très sûr, il semble) +setAllowsAnyHTTPSCertificate:forHost: pour NSURLRequest . Y at-il une API non-privé pour émuler cette fonctionnalité?

Était-ce utile?

La solution

Autres conseils

En fait, je teste avec 10.6.8 et ce code fonctionne toujours - il utilise l'API privée, mais vérifier que le sélecteur existe (myurl est le NSURL que je suis en train de charger dans une WebView ou un NSURLConnection):

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

    fp = [NSURLRequest methodForSelector:selx];

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

Notez que « @selector » n'a pas été utilisé de façon qu'absolument tous le travail serait fait à l'exécution. Cela rend-il aussi sûr et aussi caché des chèques d'Apple comme peut l'être, surtout si vous obscurcir la chaîne.

Une solution de contournement est vraiment stupide de faire votre propre méthode de catégorie:

@implementation NSURLRequest (IgnoreSSL)

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

@end

Cela devrait obtenir par des contrôles API privées d'Apple, mais il est toujours la même chose (en utilisant une API privée, non documentée [1] qui est susceptible de se casser à tout moment). En fait, ce qui est pire, car il permet tout, pas seulement cet hôte.

[1]. Une API privée devrait rendu public, mais une API privée néanmoins

setAllowsAnyHTTPSCertificate semble désormais non pris en charge dans OS X 10.6.6 tout à fait.

Ai-je dit 10.6.6? Peut-être que je l'ai dit « Vista neige ».

Pas une solution, mais une suggestion. Avez-vous pensé à utiliser Cadre ASIHttpRequest pour cela? Ce cadre est complet dans tous les aspects. Consultez la documentation, il peut peut-être vous aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top