J'ai une application qui fonctionne bien, mais depuis que j'ai mis à jour OS3.1 et mis à jour le SDK, l'application ne parvient pas à se connecter sur un serveur distant, en transmettant une chaîne de connexion au Fonction stringWithContentsOfUrl. Avant la mise à jour, cela fonctionnait correctement, et si je copiais la chaîne de texte affichée dans l'instruction NSLog et que je la collais dans un navigateur, j'obtenais la bonne réponse, mais elle répondait avec "LOGIN_ERROR" indiquant échec.stringWithContentsOfUrl défaillant après la mise à jour vers OS3.1
Avez-vous une idée de la raison pour laquelle cela échoue maintenant et comment y remédier?
NSString* userName = [[NSUserDefaults standardUserDefaults] stringForKey:@"username_pref"];
NSString* password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password_pref"];
NSString* loginUrl = [NSString stringWithFormat:@"https://website.com/API/login?email=%@&password=%@", userName, password];
NSLog (@"Logging in as %@ using %@ at [%@]", userName, password, loginUrl);
NSURL* url = [NSURL URLWithString:loginUrl];
NSString* loginDetails = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
if ([loginDetails compare:@"\"LOGIN_ERROR\""] == NSOrderedSame)
{
DLog (@"Login Failed : LOGIN_ERROR");
self.isLoggedIn = NO;
}
else
{
DLog (@"Login Success");
if (userDetails) {
[userDetails release];
}
NSDictionary* jsonData = [loginDetails JSONValue];
userDetails = [[[DMUserDetails alloc] init] retain];
userDetails.id = [[jsonData objectForKey:@"id"] intValue];
userDetails.api_token = [jsonData objectForKey:@"api_token"];
userDetails.full_name = [jsonData objectForKey:@"full_name"];
userDetails.mobile_number = [jsonData objectForKey:@"mobile_number"];
userDetails.mobile_host = [jsonData objectForKey:@"mobile_host"];
userDetails.email = [jsonData objectForKey:@"email"];
userDetails.twitter = [jsonData objectForKey:@"twitter"];
userDetails.jabber = [jsonData objectForKey:@"jabber"];
userDetails.msn = [jsonData objectForKey:@"msn"];
userDetails.start_page = [jsonData objectForKey:@"start_page"];
userDetails.date_format = [[jsonData objectForKey:@"date_format"] intValue];
userDetails.time_format = [[jsonData objectForKey:@"time_format"] intValue];
userDetails.sort_order = [[jsonData objectForKey:@"sort_order"] intValue];
userDetails.timezone = [jsonData objectForKey:@"timezone"];
userDetails.tz_offset = [jsonData objectForKey:@"tz_offset"];
userDetails.premium_until = [jsonData objectForKey:@"premium_until"];
userDetails.default_reminder = [jsonData objectForKey:@"default_reminder"];
self.isLoggedIn = YES;
}
[self performSelectorOnMainThread:@selector(didFinishLogon) withObject:nil waitUntilDone:NO];
vous pouvez regarder les journaux du serveur Web, si vous avez une possibilité. – Eimantas
Malheureusement ce n'est pas mon serveur web, donc ce n'est pas possible – Xetius
Le code me semble bon. Le message de retour a-t-il changé, peut-être entre différents serveurs? – Jordan