栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用AFNetworking和HTTP基本身份验证

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用AFNetworking和HTTP基本身份验证

AFNetworking 2.x的答案已更新

对于AFNetworking 2.x:

在2.x中,它们取消了AFHTTPClient,因此您需要使用自己的类扩展AFHTTPRequestOperationManager。然后,您可以从其他代码中调用该类。例如,这是扩展AFHTTPRequestOperationManager的示例类:

SBAPIManager.h:

#import "AFHTTPRequestOperationManager.h"@interface SBAPIManager : AFHTTPRequestOperationManager- (void)setUsername:(NSString *)username andPassword:(NSString *)password;+ (SBAPIManager *)sharedManager;@end

SBAPIManager.m:

#import "SBAPIManager.h"#import "AFNetworkActivityIndicatorManager.h"@implementation SBAPIManager#pragma mark - Methods- (void)setUsername:(NSString *)username andPassword:(NSString *)password{    [self.requestSerializer clearAuthorizationHeader];    [self.requestSerializer setAuthorizationHeaderFieldWithUsername:username password:password];}#pragma mark - Initialization- (id)initWithbaseURL:(NSURL *)url{    self = [super initWithbaseURL:url];    if(!self)        return nil;    self.requestSerializer = [AFJSonRequestSerializer serializer];    [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];    return self;}#pragma mark - Singleton Methods+ (SBAPIManager *)sharedManager{    static dispatch_once_t pred;    static SBAPIManager *_sharedManager = nil;    dispatch_once(&pred, ^{ _sharedManager = [[self alloc] initWithbaseURL:[NSURL URLWithString:@"http://localhost:3000"]]; }); // You should probably make this a constant somewhere    return _sharedManager;}@end

然后,在您的代码中,可以这样调用它:

[[SBAPIManager sharedManager] setUsername:yourUsernameVariableHere andPassword:yourPasswordVariableHere];[[SBAPIManager sharedManager] GET:@"/tasks.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {    self.tasks = [responseObject objectForKey:@"results"];    [self.activityIndicatorView stopAnimating];    [self.tableView setHidden:NO];    [self.tableView reloadData];    NSLog(@"JSON");} failure:^(AFHTTPRequestOperation *operation, NSError *error) {    // error stuff here}];

对于AFNetworking 1.x:

AFNetworking中对此的最佳实践是使用您自己的类扩展AFHTTPClient。然后,您可以从其他代码中调用该类。例如,这是扩展AFHTTPClient的示例类:

SBAPIManager.h:

#import "AFNetworking/AFHTTPClient.h"@interface SBAPIManager : AFHTTPClient- (void)setUsername:(NSString *)username andPassword:(NSString *)password;+ (SBAPIManager *)sharedManager;@end

SBAPIManager.m:

#import "SBAPIManager.h"#import "AFJSONRequestOperation.h"#import "AFNetworkActivityIndicatorManager.h"@implementation SBAPIManager#pragma mark - Methods- (void)setUsername:(NSString *)username andPassword:(NSString *)password{    [self clearAuthorizationHeader];        [self setAuthorizationHeaderWithUsername:username password:password];}#pragma mark - Initialization- (id)initWithbaseURL:(NSURL *)url{    self = [super initWithbaseURL:url];    if(!self)        return nil;    [self registerHTTPOperationClass:[AFJSonRequestOperation class]];    [self setDefaultHeader:@"Accept" value:@"application/json"];    [self setParameterEncoding:AFJSONParameterEncoding];    [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];    return self;}#pragma mark - Singleton Methods+ (SBAPIManager *)sharedManager{    static dispatch_once_t pred;    static SBAPIManager *_sharedManager = nil;    dispatch_once(&pred, ^{ _sharedManager = [[self alloc] initWithbaseURL:[NSURL URLWithString:@"http://localhost:3000"]]; }); // You should probably make this a constant somewhere    return _sharedManager;}@end

然后,在您的代码中,可以这样调用它:

[[SBAPIManager sharedManager] setUsername:yourUsernameVariableHere andPassword:yourPasswordVariableHere];[[SBAPIManager sharedManager] getPath:@"/tasks.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {    self.tasks = [responseObject objectForKey:@"results"];    [self.activityIndicatorView stopAnimating];    [self.tableView setHidden:NO];    [self.tableView reloadData];    NSLog(@"JSON");} failure:^(AFHTTPRequestOperation *operation, NSError *error) {    // error stuff here}];


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号