我正在使用這種方式在我的應用程序中登錄API。使用sendAsynchronousRequest處理401狀態碼:iOS中的請求API
NSString *url = [NSString stringWithFormat:@"%@//login",xyz];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
if (!jsonData) {
NSLog(@"Error creating JSON object: %@", [error localizedDescription]);
}
[request setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setValue:APIKEY forHTTPHeaderField:@"X_API_KEY"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:jsonData];
[NSURLConnection sendAsynchronousRequest:request
// the NSOperationQueue upon which the handler block will be dispatched:
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData: data options: 0 error: &error]; //I am using sbjson to parse
if(httpResponse.statusCode == 200)
{
//Show message to user success
}
else if(httpResponse.statusCode == 401)
{
//Show message to user -fail
}
else if(httpResponse.statusCode == 500)
{
//Show message to user- server error
}
}];
當我使用正確的用戶名和密碼,我得到的HttpResponse和狀態代碼爲200元。但如果使用錯誤的用戶名和密碼,我沒有得到401
那麼如何處理這種情況
問候 蘭吉特
401聽起來像是對錯誤憑證的合理迴應,但是什麼使得您確定這是服務器的設計?也許響應主體包含一個線索。 – danh 2015-02-09 15:51:56
@danh,正如你在上面的代碼中看到的那樣,我是在狀態碼的基礎上檢查它的,截至目前我沒有得到任何狀態碼,當憑據錯誤時,我在錯誤代碼中得到錯誤代碼:104。所以你建議我在檢查時使用它? – Ranjit 2015-02-10 06:28:15