Handle 401 status code with sendAsynchronousRequest:request API in iOS(在iOS中使用sendAchronousRequest:RequestAPI处理401状态码)
本文介绍了在iOS中使用sendAchronousRequest:RequestAPI处理401状态码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用此方法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。
那么如何处理这种情况
问候 兰吉特
推荐答案
您正在将NSURLResponse
转换为NSHTTPURLResponse
,但这不会自动公开您在statusCode
属性中预期的实际值。
相反,您应该检查error
属性是否已填充,并改为检查code
属性。
if(error)
{
NSLog(@"error: %@", error.code);
if(error.code == 401)
{
//handle 401 errors
}
else if(error.code == 500)
{
//handle 500 errors
}
}
else
{
//successful request
}
这篇关于在iOS中使用sendAchronousRequest:RequestAPI处理401状态码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:在iOS中使用sendAchronousRequest:RequestAPI处理401状态码


基础教程推荐
猜你喜欢
- AdMob 广告未在模拟器中显示 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01