HTTPS服务不起作用

问题描述:

我想通过使用Web服务登录。HTTPS服务不起作用

我的网站是基于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=<SecTrustRef: 0xa5768d0>} 

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

+0

我该如何解决它? – Arahim 2013-02-21 19:59:02

+0

ohh谢谢,这清除了很多。 – Arahim 2013-02-21 20:00:12

+0

没问题。我[找到一个类似的问题](http://*.com/questions/12347410/iphone-secure-restfull-server-the-certificate-for-this-server-is-invalid)可能会帮助你,看来就好像它有一些相关的答案。有一种方法可以忽略它,这是别人在这里发布的内容,但不推荐。 – JMarsh 2013-02-21 20:04:30

发生什么事是您的证书无效(从您的应用程序的角度来看)。如果您想冒险,可以添加以下代码。

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

所以证书将被忽略。 (请记住将您的域名替换为您的域名。)

+0

它将如何被触发? – Umitk 2016-06-03 09:22:27