HTTPS服务无法正常工作

我想使用Web服务登录。

我的网站是基于https的。 我正在使用以下教程。

http://agilewarrior.wordpress.com/2012/02/01/how-to-make-http-request-from-iphone-and-parse-json-result/ 

以下代码工作正常。

 responseData = [NSMutableData data]; NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:@"https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AIzaSyAbgGH36jnyow0MbJNP4g6INkMXqgKFfHk"]]; [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

但我的代码是

 responseData = [NSMutableData data]; NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:@"https:myurl/login?userId=username&password=111111"]]; [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

它给出了错误

 Connection failed: Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be --My URL-- which could put your confidential information at risk." UserInfo=0xa294260 {NSErrorFailingURLStringKey=https://mywebsite/login?userId=username&password=111111, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSErrorFailingURLKey=https://mywebsite/login?userId=username&password=111111, NSLocalizedDescription=The certificate for this server is invalid. You might be connecting to a server that is pretending to be --My URL-- which could put your confidential information at risk., NSUnderlyingError=0xa5befc0 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be --My URL-- which could put your confidential information at risk.", NSURLErrorFailingURLPeerTrustErrorKey=} 

这是您要连接的网站的问题,而不是代码。 如果它没有已知证书,则将其视为安全风险。

发生的事情是您的证书无效(在您的应用程序的角度)。 如果您想承担风险,可以添加以下代码。

 - (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]; } - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { NSArray * trustedHosts = @[@"your domain"]; if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) if ([trustedHosts containsObject:challenge.protectionSpace.host]) [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge]; [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; } 

因此证书将被忽略。 (请记住将您的域名替换为“您的域名”。)