Request to web service over SSL

ios, ios6, nsmutableurlrequest, objective-c

Solution

You should add below delegate methods to your communication class.

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        if ([YOUR_HOST isEqualToString:challenge.protectionSpace.host])
        {
            [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];           
        }
    }   
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

Problem

i am struggling to request web service using https. I am getting this kind of error: ``` An error occured : The certificate for this server is invalid. You might be connecting to a server that is pretending to be “SERVER_ADDRESS” which could put your confidential information at risk. ``` I am not using NSUrlConnectionDelegate. Here is my method: ``` - (void)sendRequestWithUrl:(NSURL*)url block:(void (^)(NSDictionary *dict, NSError *error)) block{ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; NSError* err = nil; NSHTTPURLResponse* rsp = nil; // Perform the request synchronously on this thread NSData *rspData = [NSURLConnection sendSynchronousRequest:request returningResponse:&rsp error:&err]; if (rspData && err == nil) { NSDictionary *result = [NSJSONSerialization JSONObjectWithData:rspData options:NSJSONReadingMutableLeaves error:&err]; if(result) { block(result, err); } else { block(nil, err); } }else{ DLog(@"Requesting URL: %@ An error occured : %@",url,[err localizedDescription]); block(nil, err); } } ``` How i could solve this problem ?

Original source

Related problems