URLからデータを取得しようとしていますが、何らかの理由で次の操作を行っても何も起こりません。どちらdidReceiveResponse:
、didReceiveData:
、didFailWithError:
またはconnectionDidFinishLoading:
が、私はこれを行うことによって、私の要求にタイムアウトを追加する場合を除き、到達されていますNSURLConnection not responding
-(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];
}
EDIT:私はまだ持ってるの[request setTimeoutInterval:10.0]
は、ここで私がやってんですよこの問題は、今実際のデバイスにもあります。私がコメントで言ったように、私はこのアプリでARCをはじめて使用し、XCode 4.2を使用しています。
サーバーはオンラインですか? – 0xSina
タイムアウトを設定すると、何が呼び出されますか?リクエストがロードされるか、失敗するか?後者の場合は、エラーテキストを教えてください。デフォルトのタイムアウトは60秒です。障害メソッドが呼び出されるまで待つだけの十分な時間を確保してください。 – coverback
はい、サーバーはオンラインです。多くのURLを試して、問題ではないことを確認してください。 タイムアウトを設定すると、次のように表示されます。 '接続に失敗しました!エラー - 要求がタイムアウトしました。 URLに続いて。 – ChrisTauziet