我正在使用NSURLConnection和NSURLConnectionDelegate協議來發布URL從用戶名和密碼輸入從iPhone客戶端到服務器。一旦服務器接收到URL,服務器上提供的Web服務將以JSON格式填充一些數據並將其發送回iPhone客戶端。如何驗證用戶已經使用NSURLConnectionDelegate登錄
我的WebserviceDelegate類使用NSURLConnectionDelegate協議。
@implementation WebserviceDelegate
- (id)initWithURL:(NSURL *)url
{
if (self = [super init])
{
responseData = [NSMutableData data];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
connection = [NSURLConnection connectionWithRequest:request delegate:self];
[connection start];
}
return self;
}
...
@end
現在我想驗證我從服務器獲得響應告訴我,我是否登錄。要做到這一點通過Web服務發送會有所謂的「地位」一本字典的關鍵數據。如果「狀態」爲「真」,則表示登錄成功。如果看到「假」,則意味着無法登錄。
但在iPhone端,我不知道如何實現上述邏輯,因爲:
請求是異步的,所以當我嘗試驗證一個自定義的方法,我得到空值的狀態的關鍵。 (responseDict是在.h文件中定義的變量,它的值是從
(無效)連接檢索到:(NSURLConnection的*)連接didReceiveData:(NSData的 在我WebserviceDelegate *)數據
類)
NSString *status = [responseDict objectForKey:@"status"];
NSLog(@"status = %@", status);
if ([@"true" isEqualToString:status]) {
return YES;
}
else {
return NO;
}
How'bout'連接:didReceiveAuthenticationChallenge:'? – 2012-08-14 05:18:49
...以及最後一個if-else儘可能不可讀。使用'return [status isEqualToString:@「true」];'代替。 – 2012-08-14 05:19:47
不是連接:didReceiveAuthenticationChallenge在iOS 5中已棄用?我正在使用連接:willSendRequestForAuthenticationChallenge,我仍然試圖找出如何正確使用它來驗證登錄。 – newguy 2012-08-14 06:19:42