In the app I'm developing I connect to a server, to request some data. This works fine. An authentication challenge is received and processed, and the connection performs beautifully. If however I then change the username/password, and attempt to connect again, the authentication is refused by the server, but only when running on the device (iPhone/iPod Touch); when running in the simulator changing to another account works just fine. This problem persists between subsequent runs of the app. The only way to be able to change to a new account on the device, is to delete the app completely from the device, and then install it anew. In the simulator however, I can change accounts and successfully connect to the sever as often as I want, including within the same app session.
I verified the password and username are always correct when authenticating. This is how I handle the challenge: ===================== - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:userEmailAddressKey]; NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:uUserPasswordKey]; NSInteger failureCount = challenge.previousFailureCount; if (failureCount == 0 && username && password) { self.credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession]; [[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:self.credential forProtectionSpace:[(MyAppDelegate *)[[UIApplication sharedApplication] delegate] myProtectionSpace]]; [[challenge sender] useCredential:self.credentialforAuthenticationChallenge:challenge]; } else { [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; } } ===================== The protection space is created when the app starts: ===================== self.myProtectionSpace = [[[ NSURLProtectionSpacealloc] initWithHost:@"www.some.url" port:80 protocol:@"http" realm:nil authenticationMethod:NSURLAuthenticationMethodDefault] autorelease]; ===================== The connection is created thus: ===================== -(void)fetchURL { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURLURLWithString:self.urlString]]; switch (method) { case GET: [theRequest setHTTPMethod:@"GET"]; break; case POST: [theRequest setHTTPMethod:@"POST"]; [theRequest setValue:[NSString stringWithFormat:@"%d", [self .postDatalength]] forHTTPHeaderField:@"Content-Length"]; [theRequest setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"]; [theRequest setHTTPBody:self.postData]; break; } [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; [[NSRunLoop currentRunLoop ] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:60]]; [pool release]; } ===================== Any ideas as to why I can't change accounts on the device, not even after exiting and restarting the app? Since the code works in the simulator, and I can't myself find anything wrong with it, it looks like a bug in the iPhone OS, which I should file with Apple. Is anyone familiar with an issue like this, and/or does anyone have a workaround so that we can change accounts without having to delete and re-install the app? -António ----------------------------------------------------------- And could you keep your heart in wonder at the daily miracles of your life, your pain would not seem less wondrous than your joy. --Kahlil Gibran ----------------------------------------------------------- ---------------------------------------------------- There is a world of difference between searching for happiness and choosing to be happy. ---------------------------------------------------- _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com