반응형
NSURLConnection 대리자 메서드가 호출되지 않습니다.
GET 요청을 사용하여 서버와 통신하기 위해 간단한 NSURLConnection을 만들려고합니다. 연결은 잘 작동하지만 NSURLConnection의 위임 메서드는 호출되지 않습니다.
수행중인 작업은 다음과 같습니다.
NSString *post = [NSString stringWithFormat:@"key1=%@&key2=%@&key3=%f&key4=%@", val1, val4, val3, val4];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease] ;
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.domain.com/demo/name/file.php?%@", post]]];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
다음 대리자 메서드를 구현했지만 호출 된 메서드가 없습니다.
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"did fail");
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSLog(@"did receive data");
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSLog(@"did receive response ");
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSLog(@"did finish loading");
[connection release];
}
내가 뭔가를 놓치고 있습니까?
메인 스레드에서 작업을 실행 해보십시오.
NSURLConnection * connection = [[NSURLConnection alloc]
initWithRequest:request
delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];
[connection start];
백그라운드 스레드에서 이것을 호출하고 있습니까? 백그라운드 스레드에서이 작업을 수행하는 경우 대리자가 호출되기 전에 스레드가 종료 될 수 있습니다.
수신 된 응답의 길이를 확인하여 0 바이트의 데이터를 가져 오지 않아야합니다.
요청이 메인 스레드에서 호출되었는지 확인하는 것 외에도 시스템에 실행 시간을 되돌려 놓았는지 확인할 수 있습니다 ( "main"을 종료하는 경우). 델리게이트가 호출 될 때까지 루프에 머무르는 테스트 코드가있었습니다. 시스템이 메인 스레드에서 델리게이트를 호출하기 위해 작업을 수행해야하기 때문에 절대 호출되지 않습니다.
참조 URL : https://stackoverflow.com/questions/5787170/nsurlconnection-delegate-methods-are-not-called
반응형
'Programing' 카테고리의 다른 글
pyspark 데이터 프레임에서 열을 삭제하는 방법 (0) | 2020.12.27 |
---|---|
지원되는 유일한 암호는 키 길이가 올바른 AES-128-CBC 및 AES-256-CBC입니다. (0) | 2020.12.27 |
웹 배포 작업이 실패했습니다. (0) | 2020.12.27 |
Postgresql : 스키마가 있는지 확인 하시겠습니까? (0) | 2020.12.27 |
기존 디렉토리를 Eclipse로 가져 오는 방법은 무엇입니까? (0) | 2020.12.27 |