使用 AFNetworking 的基本身份验证
Posted
技术标签:
【中文标题】使用 AFNetworking 的基本身份验证【英文标题】:Basic authentication using AFNetworking 【发布时间】:2015-07-25 03:30:41 【问题描述】:我是 ios 开发新手,如何在 Objective-C 中使用 AFNetworking 进行 HTTP 基本身份验证?
怎么用?
- (Void) setAuthorizationHeaderWithUsername: (NSString *) username password: (NSString *) password
【问题讨论】:
【参考方案1】:当您需要添加标头或扩展它时,您应该创建自己的 AFHTTPClient 实例。您可以将 sharedInstance 创建为单例,然后调用实例方法设置用户名和密码。
+ (AFHTTPClient *)sharedClient
static AFHTTPClient *_sharedClient = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
_sharedClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"your_server_url"]];
[_sharedClient setAuthorizationHeaderWithUsername:@"username" password:@"password"];
);
return _sharedClient;
【讨论】:
【参考方案2】:感谢您的帮助,但失败了。
您正在返回以下错误:
Request failed: unacceptable content-type: text/html
NSLocalizedDescription = Request failed: unacceptable content-type: text/html.
我相信服务器正在返回 text/html
并且代码需要 JSON。
【讨论】:
【参考方案3】:您可以使用 AFN 来处理您的大部分网络请求。希望对您有所帮助。
- (Void) setAuthorizationHeaderWithUsername: (NSString *) username password: (NSString *) password
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//a NSDictionary parameter
NSDictionary *parameters = @@"name": username, @"pwd": password;
[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
//you can get JSON response in responseObject whether your request or wrong.
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
【讨论】:
不会在 URL 中以纯文本形式包含用户名和密码吗?绝对不是好习惯 这是一个 NSDictionary。 "name" &"pwd" 是您网站的必需字符串。用户名当然是字符串,你设置你的注册名和密码。当您使用 AFNetworking 时,没有人会在 url 中看到用户名和密码。 POST 数据不会在 URL 中发送,这与 AFNetworking 无关。但除非您使用 https,否则它会在正文中以纯文本形式发送。 感谢您的帮助,但失败了。您返回以下错误:“请求失败:不可接受的内容类型:文本/html NSLocalizedDescription = 请求失败:不可接受的内容类型:文本/html”。我相信服务器以 text/html 的形式返回,并且代码需要 JSON。以上是关于使用 AFNetworking 的基本身份验证的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 2 使用 AFHTTPRequestOperation 进行身份验证
带有凭据的 AFNetworking 上传任务(HTTP 基本身份验证)
AFNetworking 2.0:凭据未在前一次请求的 30 秒内发送到身份验证