मेरे सर्वर को क्लाइंट प्रमाण पत्र की आवश्यकता होती है, कुछ समय बाद AFNetworking दस्तावेज़ों में उदाहरणों को खोजना और पढ़ने के बाद मैंने सेट प्रमाणीकरणChallengeBlock सेट करने और क्लाइंट प्रमाणपत्र प्रदान करने का प्रयास किया।AFNetworking setAuthenticationChallengeBlock
ब्राउज़र में प्रमाणपत्र प्रमाणित ठीक काम करता है।
[requestOperation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge)
{
NSLog(@"AuthenticationChallenge");
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"client" ofType:@"pfx"];
NSData *PKCS12Data = [[NSData alloc] initWithContentsOfFile:thePath];
CFDataRef inPKCS12Data = (__bridge CFDataRef)PKCS12Data;
SecIdentityRef identity;
[self extractIdentity:inPKCS12Data :&identity];
SecCertificateRef certificate = NULL;
SecIdentityCopyCertificate (identity, &certificate);
const void *certs[] = {certificate};
CFArrayRef certArray = CFArrayCreate(kCFAllocatorDefault, certs, 1, NULL);
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:identity certificates:(__bridge NSArray*)certArray persistence:NSURLCredentialPersistencePermanent];
[challenge.sender useCredential:credential forAuthenticationChallenge:challenge];
}];
[requestOperation start];
लेकिन ब्लॉक के अंदर कोड कभी नहीं कहा जा रहा है और सर्वर अपेक्षा के अनुसार 403 त्रुटि देता है।
setUploadBlock आदि जैसे अन्य ब्लॉक में कोड ठीक काम करता है।
कोई विचार मेरी गलती कहां है?
धन्यवाद, यह उत्साहजनक है कि मैंने जो गड़बड़ की है। –
कृपया आप एक पूर्ण उदाहरण दिखा सकते हैं? – Christian
मुझे एक पूर्ण उदाहरण भी पसंद आएगा। – lostintranslation