Добрый день всем,Я работаю над одним файлом, который должен управлять загрузкой контента через Интернет, я знаю, что существует запрос ASIHttp, и это отличная библиотека, но у меня есть свои причины не использовать его.Класс работает довольно хорошо, за исключением одного: я безуспешно пытаюсь работать с общей папкой моей учетной записи MobileMe.Я загрузил в него файл и пытался скачать его, используя мой класс.Читая некоторые вопросы по stackOF и читая документы, я пришел к этому коду, но, похоже, он не работает:
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
if([protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
{
NSLog(@"SERVER TRUST AUTH");
return YES;
}
else if([protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodHTTPBasic])
{
NSLog(@"HTTP BASIC AUTH");
return YES;
}
NSLog(@"NO AUTH");
return NO;
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
NSLog(@"Authetication");
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
{
NSLog(@"Trust Challange");
SecTrustResultType trustResultType;
OSStatus err=SecTrustEvaluate(challenge.protectionSpace.serverTrust, &trustResultType);
NSLog(@"SecTrustResult %lu %ld",trustResultType,err);
if (trustResultType == kSecTrustResultProceed || trustResultType == kSecTrustResultConfirm || trustResultType == kSecTrustResultUnspecified) {
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
}
else{
[challenge.sender cancelAuthenticationChallenge:challenge];
}
// [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}
else if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodHTTPBasic])
{
NSLog(@"HTTP Challenge");
NSURLCredential *credential = [[NSURLCredential alloc] initWithUser:@"user" password:@"pass" persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
[credential release];
}
else{
[[challenge sender]cancelAuthenticationChallenge:challenge];
}
}
Теперь я застрял, потому что из журнала я вижу, что функция оценки возвращаетрезультат 4, который соответствует kSecTrustResultUnspecified, но ничего не работает, даже если я скажу отправителю запроса continueWithoutCredentialForAuthenticationChallenge
.URL файла: https://public.me.com/XXXX/Objective.zip (ссылка удалена), zip - это библиотека ObjectiveZip, которую я также реализовал в своем классе.Любое предложение?