我有一個快樂地運行的應用程序,但自從我更新到OS3.1並更新SDK後,應用程序無法登錄到遠程服務器,因此將連接字符串傳遞給stringWithContentsOfUrl函數。stringWithContentsOfUrl更新到OS3.1後失敗
更新之前,這工作正常,如果我複製顯示在NSLog語句中的文本字符串並粘貼到瀏覽器中,然後我得到正確的響應,但是,這是回覆「LOGIN_ERROR」指示失敗。
任何想法爲什麼這現在失敗了,以及如何解決它?
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];
如果您有可能,您可能需要查看Web服務器日誌。 – Eimantas 2009-09-11 20:32:31
不幸的是,它不是我的網絡服務器,所以這是不可能的 – Xetius 2009-09-11 20:40:26
代碼看起來不錯。返回消息是否更改過,可能是不同的服務器之間? – Jordan 2009-09-11 23:41:49