首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLAuthenticationChallenge.sender返回nil

NSURLAuthenticationChallenge.sender返回nil
EN

Stack Overflow用户
提问于 2014-03-02 10:51:05
回答 2查看 595关注 0票数 2

请原谅我问题中的点符号。

我正在使用NSURLSession尝试登录一个网站。Apple的文档建议以这种方式处理身份验证挑战。

代码语言:javascript
复制
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
                                             completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler
{
    NSURLCredential *credential = [NSURLCredential credentialWithUser:@"<email>"
                                                             password:@"<password>"
                                                          persistence:NSURLCredentialPersistenceNone];
    [[challenge sender] useCredential:credential
           forAuthenticationChallenge:challenge];
}

问题是质询发送者返回nil。我是不是在设置中遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-04-24 02:57:21

我不确定您是否弄清楚了这一点,但是您应该调用完成处理程序来代替旧的useCredential方法:

代码语言:javascript
复制
   completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
票数 2
EN

Stack Overflow用户

发布于 2014-06-17 23:42:00

您可以尝试使用http header进行会话授权:

代码语言:javascript
复制
NSString *userPasswordString = [NSString stringWithFormat:@"%@:%@", user, password];
NSData * userPasswordData = [userPasswordString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64EncodedCredential = [userPasswordData base64EncodedStringWithOptions:0];
NSString *authString = [NSString stringWithFormat:@"Basic %@", base64EncodedCredential];

configuration.HTTPAdditionalHeaders = @{@"Authorization": authString};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22123280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档