setbeat musicall fildo iphone nsurlconnection nsurlprotocol

iphone - fildo - musicall apk 2018



Los métodos de delegado de NSURLConnection no se llaman (4)

¿Estás llamando esto a un hilo de fondo? Si está realizando esto en un hilo de fondo, probablemente el hilo esté saliendo antes de que se pueda llamar a los delegados.

Intento crear una simple NSURLConnection para comunicarme con un servidor usando una solicitud GET. La conexión funciona bien, pero los métodos delegados de NSURLConnection nunca se llaman ...

Esto es lo que estoy haciendo:

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];

Han implementado los siguientes métodos delegados, pero ninguno se llama ...

-(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]; }

¿Me estoy perdiendo de algo?


Además de verificar si la solicitud se llama desde el hilo principal, puede verificar si le devuelve el tiempo de ejecución al sistema (si sale de "main"). Tenía un código de prueba que permanecería en un bucle hasta que se llamara al delegado: nunca se llamaría, porque el sistema necesita hacer cosas para que se llame al delegado, en el hilo principal.


Intenta ejecutar la operación en el hilo principal:

NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; [connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; [connection start];


Intente verificar la longitud de la respuesta recibida, no debería obtener 0 bytes de datos.