Używałem następującego kodu
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
operation.allowsInvalidSSLCertificate=YES;
Teraz zmieniłem AFNetworking na najnowszą wersję, która jest 2.0. operation.allowsInvalidSSLCertyfikat nie działa już z AFHTTPRequestOperation. Jak na dokumenty, których użyłem
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
i mój kod żądania jest
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog (@"success: %@", operation.responseString);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", error.description);
}
];
[operation start];
[operation waitUntilFinished];
Ale to nie działa dla protokołu HTTPS, który wymaga certyfikatów. Co powinienem zrobić, aby to zadziałało?
Odpowiedzi:
25 dla odpowiedzi № 1Rozwiązałem ten problem, dodając następujący kod wcześniej [rozpoczęcie operacji];
AFSecurityPolicy *sec=[[AFSecurityPolicy alloc] init];
[sec setAllowInvalidCertificates:YES];
operation.securityPolicy=sec;
Stało się tak, ponieważ AFHTTPRequestOperationManager nie jest połączony z AFHTTPRequestOperation. Tak więc ustawianie certyfikatu bezpieczeństwa menedżera nie może wykonywać magii w requestOperation, więc trzeba go zainicjować i przypisać jeden AFHTTPRequestOperation.
Mam nadzieję, że to pomoże komuś :)
0 dla odpowiedzi nr 2
Z tego co wiem. Jest to problem iOS 7. Apple nie zezwala na komunikację z własnoręcznie podpisanymi stronami z certyfikatami, chyba że wyślesz certyfikat do urządzenia i dodasz jako zaufaną listę certyfikatów.
Wspieranie komentarza na inne pytanie: https://stackoverflow.com/a/20251011/753603
Nie mogłem znaleźć kawałka udokumentowanego tekstu od Apple.