NSURLCredentialStorage не работает в iOS 7
Надеюсь, я не уникальная жертва iOS 7:)
У меня есть приложение, которое синхронизирует свою базу данных с моим веб-сервисом, в моем потоке синхронизации есть 14 обращений к веб-сервисам с использованием аутентификации Windows. Все эти вызовы находятся в отдельной теме. Я создал собственный класс, который возвращает NSData по URL. До iOS7 все работало нормально, но с новой версией iOS учетные данные пользователя, сохраненные в sharedCredentialStorage (NSURLCredentialStorage), больше не работают. Вот мой код:
- (BOOL)isValidURL:(NSString *) stringUrl forUsername:(NSString*) username andPassword:
(NSString*) password andDomain:(NSString*) _domain
{
username = [_domain stringByAppendingFormat:@"\\%@",username];
NSURLCredential *credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession ];
//------------search host, port for credential storege......
NSArray *dati = [self getHostAndPortFromUrl:stringUrl];
if(dati==nil)
return FALSE;
//this info are correct
NSString *host = [dati objectAtIndex:0];
NSNumber *port = [dati objectAtIndex:1];
//-----------------------------------------------------------
NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:host port:port.intValue protocol:@"http" realm:host authenticationMethod:NSURLAuthenticationMethodNTLM];
[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential forProtectionSpace:protectionSpace];
//creadentials are saved
NSLog(@"%@",[[NSURLCredentialStorage sharedCredentialStorage] allCredentials]);
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",stringUrl]];
NSURLRequest *req = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:25.0];
NSHTTPURLResponse *res = nil;
NSError *err = nil;
[NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err ];
//here i receive error: Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)"
//show alert view if error
[self showMsgBasedOnError:err andResponce:res];
//NSLog(@"url valid = %@\n", ((err==nil && [res statusCode]!=404) ? @"YES" : @"NO"));
return (err==nil && [res statusCode]!=404);
}
Как я могу реализовать синхронный запрос, используя учетные данные NTLM в iOS7:(?
Заранее спасибо Макс