To oczywiście tylko działać, jeśli masz non samopodpisany cert albo dodać:
#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ do pliku PCH. Jeśli używasz strąki kakao do tego będzie prawdopodobnie trzeba podklasy AFHTTPRequestOperation i wdrożenie:
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
if ([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodServerTrust]) {
if ([self bypassSslCertValidation:protectionSpace])
return YES;
else
return [super connection:connection canAuthenticateAgainstProtectionSpace:protectionSpace];
}
return [super connection:connection canAuthenticateAgainstProtectionSpace:protectionSpace];
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
if ([self bypassSslCertValidation:challenge.protectionSpace]) {
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
return;
}
else
return [super connection:connection didReceiveAuthenticationChallenge:challenge];
return;
}
}
- (BOOL) bypassSslCertValidation:(NSURLProtectionSpace *) protectionSpace
{
if (ENVIRONMENT_TYPE == DEV_ENV || ENVIRONMENT_TYPE == STAGING_ENV) {
return YES;
}
return NO;
}
Wtedy powiedzieć AFNEtworking korzystać z nowej podklasy:
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@""]];
[client registerHTTPOperationClass:[YourSubClassHTTPRequestOperation class]];
To nie jest najłatwiejszą rzeczą do zrobienia w świat i techniczne ignorowanie samopodpisania nie działa, ale jeśli używasz standardowych certyfikatów SLL Prawdopodobnie zadziała to dobrze, pamiętaj o usunięciu tego kodu lub udostępnieniu go tylko podczas debugowania, jeśli planujesz zwolnić.
Dodając do odpowiedzi, ponieważ komentarze mają ograniczenia znaków!
kilka wyborów patrząc na działania headers
powrotne, które mogą być ręcznie dodane do kolejki:
- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest
lub przekazać w swojej pracy niestandardowej podklasy do tego:
- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation;
Co jest błąd w dzienniku? Czy twój certyfikat serwera jest ważny? – nioq