didReceiveAuthenticationChallenge只调用一次iPhone

Sof*_*igy 3 iphone objective-c nsurlconnection

我正在使用连接到服务器NSURLConnection.服务器要求我使用委托方法的基本身份验证: - didReceiveAuthenticationChallenge.但这只被召唤一次.如果我将密码更改为某个不同的值,则此delegate方法不会被调用,并且我的登录成功了吗?

任何形式的帮助将不胜感激.

谢谢.

Ben*_*nor 6

解决了!

事实证明,这NSURLConnection实际上是正确的行为 - 也就是说,didReceiveAuthenticationChallenge:每个身份验证挑战都会被调用.

问题是服务器在第一个之后没有发送挑战.原来这是因为服务器正在设置cookie.

您只需删除cookie即可强制执行新的挑战.因为此服务器没有其他有用的cookie,所以我只删除所有这些:

- (void)clearCookiesForURL {
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray *cookies = [cookieStorage cookiesForURL:_URL];
    for (NSHTTPCookie *cookie in cookies) {
        NSLog(@"Deleting cookie for domain: %@", [cookie domain]);
        [cookieStorage deleteCookie:cookie];
    }
}
Run Code Online (Sandbox Code Playgroud)