NSURLConnection
непостоянный зверь, и последние пару дней у меня была похожая проблема. Но я нашел решение своей проблемы и пару предложений о том, что может быть причиной проблемы, подобной той, что у вас есть.
TLS
Во-первых, существует вероятность того, что с вами происходит кэширование учетных данных на уровне TLS. Это связано с тем, что установка соединения TLS требует больших вычислительных ресурсов [1< /а>].
Возможные решения этой проблемы — изменить используемое DNS-имя, например, добавив точку (.) в конец строки, поскольку протокол DNS принимает строку, оканчивающуюся точками, как полное DNS-имя. Я также видел, как люди добавляли хэштег (#) ко всем запросам URL и таким образом обманывали систему, чтобы она никогда не искала сохраненные учетные данные, а вместо этого просто инициировала вызов didRecieveAuthenticationChallenge
[2].
Файлы cookie
Другая возможность заключается в том, что сервер устанавливает файл cookie, который вам необходимо очистить. Вы можете сделать это, выполнив следующие действия:
-(void)clearCookies:(NSString *)urlString{
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedCookieStorage];
NSURL *url = [[NSURL alloc] initWithString urlString];
NSArray *cookies = [cookieStorage cookiesForURL:tempURL];
for(NSHTTPCookie *cookie in cookies){
//iterate over all cookies and delete them
[cookieStorage deleteCookie:cookie];
}
}
NSURLCredentialStorage
Теперь может случиться так, что учетные данные все еще хранятся в sharedCredentialStorage
, и поэтому их следует удалить, выполнив следующие действия:
NSURLCredentialStorage *store = [NSURLCredentialStorage sharedCredentialStorage];
if(store !=nil){
for(NSURLProtectionSpace *protectionSpace in [store allCredentials]){
NSDictionary *map = [[NSURLCredentialStorage sharedCredentialStorage]
credentialsForProtectionSpace:protectionSpace];
if(map!=nil){
for(NSString *user in map){
NSURLCredential *cred = [map objectForKey:user];
[store removeCredential:cred forProtectionSpace:protectionSpace];
}
}
}
}
Я надеюсь, что это поможет.
person
Hrafn
schedule
23.07.2012