不调用NSURLConnection委托方法
我正在尝试创build一个简单的NSURLConnection与使用GET请求的服务器进行通信。 连接工作正常,但委托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”)。 我有一些testing代码会留在一个循环,直到委托被调用:它永远不会被调用,因为系统需要做的东西,以便在主线程中调用委托。