在我的應用程序中,我有一個包含通過WS調用獲得的數據的分割視圖。要接收這些數據,用戶必須登錄。要登錄,我應用程序加載時模式地顯示登錄屏幕。輸入憑證後,我打印出isLoggedIn WS調用的結果。這一切工作正常和丹迪。iOS - 通過Webservice登錄
問題是,在登錄屏幕中,isLoggedIn返回用戶成功登錄(包括會話ID),但是當我關閉登錄屏幕時,每個WS調用都會失敗,因爲用戶未登錄。會話ID的匹配和WS接收呼叫,但iPad似乎在關閉登錄屏幕後刪除會話。這將導致以下日誌:
2011-09-30 09:37:05.335 DSApp[366:707] url call: http://***/ipadwebservice.asmx/authenticateUser?username=user&password=pass
2011-09-30 09:37:05.508 DSApp[366:707] Call succesful.
2011-09-30 09:37:05.509 DSApp[366:707] Logged in successfully.
2011-09-30 09:37:05.511 DSApp[366:707] Dismissing LoginView.
2011-09-30 09:37:08.644 DSApp[366:7d0f] url call: http://***/ipadwebservice.asmx/getChildFoldersByFolderID?folderId=-1
2011-09-30 09:37:08.649 DSApp[366:7d0f] Call failed. (Reason: User not logged in!)
2011-09-30 09:37:09.493 DSApp[366:7d0f] url call: http://***/ipadwebservice.asmx/getDocumentsByFolderId?folderId=-1
2011-09-30 09:37:09.497 DSApp[366:7d0f] Call failed. (Reason: User not logged in!)
另一個奇怪的事情是,當我硬編碼的登錄信息,並在applicationDidFinishLaunching
方法調用,一切都完美的作品和所有的WS調用都成功地收到。
布埃諾:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
# warning hardcode login
[WebservicesController authenticateUserWithName:@"user" andPassword:@"pass"];
self.window.rootViewController = self.splitViewController;
//login
LoginViewController *loginView = [LoginViewController new];
loginView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.splitViewController presentModalViewController:loginView animated:YES];
[loginView release];
}
沒有布埃諾:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
# warning hardcode login
//[WebservicesController authenticateUserWithName:@"user" andPassword:@"pass"];
self.window.rootViewController = self.splitViewController;
//login
LoginViewController *loginView = [LoginViewController new];
loginView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.splitViewController presentModalViewController:loginView animated:YES];
[loginView release];
}
當您希望它們相同時,您是否嘗試將您的用戶輸入與硬編碼字符串進行比較?例如,在你的'[WebservicesController authenticateUserWithName:username and Password:password]'方法中設置一個斷點,並將'username'參數與硬編碼的''user'''字符串進行比較,並將'password'參數與硬編碼' 「傳遞」字符串。我只是想排除這些不匹配的機會(對於編碼或其他原因......隱藏空間等)。在GDB中,執行'print(bool)[username isEqualToString:@「user」]'並且同樣輸入密碼。 – Sam
您應該發佈調用WebServices的方法的代碼! –