me Riddle ceci: J'utilise un NSURLConnection sur un SDK iPhone Simulator 3.1.2 objet à émettre séquentiel multiple (non concurrente) demandes https. Tout fonctionne très bien 95% du temps, mais tout aussi souvent (peut-être autour de 50-100 demandes) je reçois la situation dans laquelle la méthode déléguéeNSURLConnection Réussi sans réponse HTTP
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
est appelée après [connexion départ], mais sans tout appel à la méthode déléguée
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
J'ai réduit le problème à la source ci-dessous. D'après ce que je comprends, cela rompt le contrat du comportement défini de NSURLConnection. Est-ce que quelqu'un d'autre a eu ce problème, et est-ce un bug connu ou est-ce que j'utilise NSURLConnection mal?
static BOOL hasSeenResponse = NO;
//Create a NSURLConnection and start it
-(void) begin {
NSURL* url = [NSURL [email protected]"https://some.domain.com/some/path/?some=query"];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];
NSURLRequest* request = [NSURLRequest requestWithURL:url];
if ([NSURLConnection canHandleRequest:request]) {
NSURLConnection* connection = [[NSURLConnection connectionWithRequest:request delegate:self] retain];
hasSeenResponse = NO;
[connection start];
}
}
#pragma mark NSURLConnection Delegate Methods
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if (!hasSeenResponse) {
NSLog(@"\n\nNo Response Recieved\n");
}
[connection release];
[self begin];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[connection release];
[self begin];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
hasSeenResponse = YES;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
}