- (IBAction)loginAction:(id)sender {
NSString *post =[NSString stringWithFormat:@"Email=%@&Password=%@",self.eMail.text,self.password.text];
NSString * loginURL = @"http://75.101.159.160:8222/api/mobileappapi/user/login"; // Login URL
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSHTTPURLResponse * response;
NSError * error;
NSMutableURLRequest * request;
request = [[NSMutableURLRequest alloc]initWithURL:nil cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPBody:postData];
request.URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@",loginURL]];
error = nil;
response = nil;
NSData* jsonUpdateDate = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
// jsonUpdateDate = [NSURLConnection sendSynchronousRequest:request returningResponse:response error:&error];
NSDictionary* resultsDictionary = [NSJSONSerialization JSONObjectWithData:jsonUpdateDate options:0 error:&error];
NSLog(@"%@",resultsDictionary);
NSString *userRole = [resultsDictionary objectForKey:@"UserRole"];
if (userRole != (NSString*)[NSNull null]) {
if ([userRole isEqualToString:@"Passenger"]) {
// SuccessuserRole
HomeScreen *obj=[self.storyboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[self presentViewController:obj animated:NO completion:nil];
}
else if ([userRole isEqualToString:@"Driver"]){
SelectVehicle *obj=[self.storyboard instantiateViewControllerWithIdentifier:@"SelectVehicle"];
[self presentViewController:obj animated:NO completion:nil];
}
}
}
我无法访问此处的服务
答案 0 :(得分:1)
有关详细信息,请参阅Apple的Info.plist参考(感谢@ gnasher729)。
您可以在Info.plist中添加特定域的例外:
class Good
{
}
每个例外域的所有密钥都是可选的。发言者没有详细说明任何一个键,但我认为它们都非常明显。
(来源:WWDC 2015会议703,“隐私与你的应用”,30:18)
如果您的应用有充分的理由,您还可以使用单个密钥忽略所有应用传输安全限制:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
如果您的应用没有充分的理由,您可能会有被拒绝的风险:
将NSAllowsArbitraryLoads设置为true将允许它工作,但是 Apple非常清楚他们打算拒绝使用它的应用程序 没有特定原因的旗帜。使用的主要原因 NSAllowsArbitraryLoads我能想到的将是用户创建的内容 (链接共享,自定义Web浏览器等)。在这种情况下,苹果仍然 期望您包含为URL强制执行ATS的例外 你掌控着。
如果确实需要访问未通过TLS 1.2提供的特定URL,则需要为这些域编写特定的例外,而不是使用设置为yes的NSAllowsArbitraryLoads。您可以在NSURLSesssion WWDC会话中找到更多信息。
请小心分享NSAllowsArbitraryLoads解决方案。这不是Apple的推荐修复。 - kcharwood(感谢@ marco-tolman)