2

如果网站不需要身份验证,我的代码可以正常工作,如果需要,它会在打印“创建凭据”后立即出现 EXC_BAD_ACCESS 错误。我没有发布任何东西,这段代码是直接从文档中复制而来的——知道有什么问题吗?

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
 if ([challenge previousFailureCount] == 0)
 {
  NSLog(@"received authentication challenge");

  NSURLCredential *newCredential;
  newCredential=[NSURLCredential credentialWithUser:@"root"
             password:@"rootpassword"
             persistence:NSURLCredentialPersistenceForSession];


  NSLog(@"credential created");

  [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];

  NSLog(@"responded to authentication challenge");

 }
 else
 {
  NSLog(@"previous authentication failure");

  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Authentication Failure" 
              message:@"Website did not accept the username and password."
                delegate:nil
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil];
  [alert show];
  [alert release];
 }
}
4

2 回答 2

1

事实证明,这与特定站点的身份验证方法有关 - 将我要登录的网站替换为另一个网站并且代码工作正常。

(我试图从 unRaid 的状态页面中抓取数据,unRaid 不使用实际的网络服务器,而是使用 emhttp,所以我假设这与它有关)

于 2010-03-01T15:04:33.050 回答
0

您唯一无法控制的是[challenge sender]. 尝试打印它的描述以确保它不是零。

于 2010-02-22T05:29:33.723 回答