数据参数显示nil并且它崩溃了

时间:2016-03-11 09:49:19

标签: ios

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

        }
    }
}

我无法访问此处的服务

1 个答案:

答案 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强制执行A​​TS的例外   你掌控着。

如果确实需要访问未通过TLS 1.2提供的特定URL,则需要为这些域编写特定的例外,而不是使用设置为yes的NSAllowsArbitraryLoads。您可以在NSURLSesssion WWDC会话中找到更多信息。

请小心分享NSAllowsArbitraryLoads解决方案。这不是Apple的推荐修复。 - kcharwood(感谢@ marco-tolman)

礼貌:https://stackoverflow.com/a/30732693/2963912