Pergunta

Meu aplicativo para iPhone foi rejeitado apenas por usar o método privado (muito seguro, parece) +setAllowsAnyHTTPSCertificate:forHost: por NSURLRequest. Existe uma API não privada para imitar essa funcionalidade?

Foi útil?

Outras dicas

Na verdade, estou testando com 10.6.8 e esse código ainda funciona - ele está usando a API privada, mas verificando se o seletor existe (Myurl é o NSURL que estou tentando carregar em um Webview ou uma NSurlConnection):

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

    fp = [NSURLRequest methodForSelector:selx];

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

Observe que "@selector" não foi usado para que absolutamente tudo O trabalho seria feito em tempo de execução. Isso o torna tão seguro e oculto das verificações da Apple quanto possível, especialmente se você obscurecer a corda.

Uma solução realmente estúpida é criar seu próprio método de categoria:

@implementation NSURLRequest (IgnoreSSL)

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

@end

Isso deve obter as verificações de API privadas da Apple, mas ainda é a mesma coisa (usando uma API privada e indocumentada [1] que é responsável por quebrar a qualquer momento). Na verdade, é pior, pois permite tudo, não apenas esse anfitrião.

1]: Uma API privada que deve ser tornado público, mas uma API privada, no entanto.

SetallowsanyHttpSCertificate parece agora não ser suportado no OS X 10.6.6.

Eu disse 10.6.6? Talvez eu devesse ter dito "Vista de neve".

Não é uma solução, mas uma sugestão. Você já pensou em usar Estrutura ASIHTTPREQUEST por esta? Essa estrutura está completa em todos os aspectos. Verifique a documentação, talvez possa ajudá -lo também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top