9

I have been using following code

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
operation.allowsInvalidSSLCertificate=YES;

Now i have changed AFNetworking to latest version that is 2.0. operation.allowsInvalidSSLCertificate is not working anymore with AFHTTPRequestOperation. As per documents i used

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;

and my request code is

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];

But this is not working for HTTPS which require certificates. What should i do to make this work?

Hassy
  • 5,068
  • 5
  • 38
  • 63

2 Answers2

25

I solved this problem by adding following code before [operation start];

AFSecurityPolicy *sec=[[AFSecurityPolicy alloc] init];
[sec setAllowInvalidCertificates:YES];
operation.securityPolicy=sec;

This happened because AFHTTPRequestOperationManager is not connected to AFHTTPRequestOperation. So setting manager's security certificate can not do magic at requestOperation. So have to initialize and assign one to AFHTTPRequestOperation.

Hope this help somebody :)

Hassy
  • 5,068
  • 5
  • 38
  • 63
  • I confirm that this is the solution. However I would have liked a more explicit error message from AFNetworking instead of "canceled" that does not mean much. – Chrstpsln Apr 25 '14 at 06:19
0

As far as I know. It's an iOS 7 issue. Apple does not allow communication with self signed certificate websites. Unless you send the certificate to device and add as a trusted certificate list.

Supporting comment on other question: https://stackoverflow.com/a/20251011/753603

Couldn't find piece of documented text by Apple.

Community
  • 1
  • 1
TeaCupApp
  • 11,316
  • 18
  • 70
  • 150