NSURLConnection не отвечает
Я пытаюсь получить некоторые данные из URL, но по какой-то причине ничего не происходит, когда я делаю следующее. ниdidReceiveResponse:
, didReceiveData:
, didFailWithError:
или жеconnectionDidFinishLoading:
достигаются, за исключением случаев, когда я добавляю тайм-аут в свой запрос, выполняя это[request setTimeoutInterval:10.0]
Вот что я делаю:
-(void)getConfigFromServer{
[self getContentAtURL:kUrlGetUser];
}
//Va chercher le contenu à l'URL passée en paramètre
- (void)getContentAtURL: (NSURL *)url {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString * userLogin = [userDefaults objectForKey:@"UserLogin"];
NSString * userPassword = [userDefaults objectForKey:@"UserPassword"];
NSURL * urlFinal = [NSURL URLWithString:[NSString stringWithFormat:@"%@", url]];
NSLog(@"Request : %@", [NSString stringWithFormat:@"%@", url]);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:urlFinal];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:10.0];
NSString *sourceString = [NSString stringWithFormat:@"%@:%@", userLogin, userPassword];
NSData * sourceData = [sourceString dataUsingEncoding:NSUTF8StringEncoding];
NSString *authString = [sourceData base64EncodedString];
authString = [NSString stringWithFormat: @"Basic %@", authString];
[request setValue:authString forHTTPHeaderField:@"Authorization"];
[request setValue:@"text/xml" forHTTPHeaderField:@"Accept"];
NSURLConnection * connection=[NSURLConnection connectionWithRequest:request delegate:self];
if(connection){
NSLog(@"Connection started");
receivedData = [NSMutableData data];
}else{
NSLog(@"Error while trying to initiate the connection");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[receivedData setLength:0];
if ([response respondsToSelector:@selector(statusCode)])
{
int statusCode = [((NSHTTPURLResponse *)response) statusCode];
if (statusCode >= 400)
{
[connection cancel]; // stop connecting; no more delegate messages
NSDictionary *errorInfo
= [NSDictionary dictionaryWithObject:[NSString stringWithFormat:
NSLocalizedString(@"Server returned status code %d",@""),
statusCode]
forKey:NSLocalizedDescriptionKey];
NSError *statusError = [NSError errorWithDomain:@"Error"
code:statusCode
userInfo:errorInfo];
[self connection:connection didFailWithError:statusError];
}
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription],[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[self fetchedData:receivedData];
}
РЕДАКТИРОВАТЬ: У меня все еще есть эта проблема, и теперь она есть на реальном устройстве тоже. Как я уже сказал в комментариях, я впервые использую ARC в этом приложении и использую XCode 4.2.
Любая идея?