相关疑难解决方法(0)

使用NSURLConnection和NSURLProtectionSpace确定信任

我想问一个先前提出的问题的后续问题.我已经有了创建NSURLRequest/Connection的代码,运行它并调用了用于身份验证的回调方法.这是具体的代码:

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

-(void)connection:(NSURLConnection *)connection
didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{   

    if ([challenge previousFailureCount] > 0) {
        [[challenge sender] cancelAuthenticationChallenge:challenge];
        NSLog(@"Bad Username Or Password");
        badUsernameAndPassword = YES;
        finished = YES;
        return;
    }

    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        if (appDelegate._allowInvalidCert)
        {
            // Go ahead...trust me!
            [challenge.sender useCredential:
             [NSURLCredential credentialForTrust: challenge.protectionSpace.serverTrust] 
                 forAuthenticationChallenge: challenge];
        }
        else
        {
            TrustGenerator *tg = [[TrustGenerator alloc] init];

            if ([tg getTrust:challenge.protectionSpace])
            {
                // Go ahead...trust me!
                [challenge.sender …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch certificate nsurlconnection ios

14
推荐指数
1
解决办法
1万
查看次数

iOS5:willSendRequestForAuthenticationChallenge方法正在运行递归

我使用下面的代码来验证远程服务器的用户.如果我给出正确的用户名和密码,没有问题,因为身份验证正在发生,我从服务器获得响应.

但是当我提供错误的凭据时,会以递归方式调用此方法,因此我无法解决此问题.

请帮助我,如何打破这一点,以便我能够显示身份验证失败的警报消息.

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

    NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username"
                                                             password:@"password"
                                                          persistence:NSURLCredentialPersistenceForSession];
    [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];    
}
Run Code Online (Sandbox Code Playgroud)

objective-c basic-authentication ios ios5

4
推荐指数
1
解决办法
9787
查看次数