1

这行代码是如何工作的?

我正在尝试修改 URL 以使其正常工作,但是从查看 Apple 文档来看,它并没有提供太多关于我应该将密码/URL 放在哪里的信息。

 NSString *password = [(NSString *)CFURLCopyPassword((CFURLRef)[self.request URL]) autorelease];

这行代码是 AFNetworking 框架的一部分,因此我可以通过身份验证。

应该如何构建 URL 以正确获取密码?我还没有运气。

我试着把它放在前面的用户名:密码,但这是不对的。密码不会被抓住。

所以基本上http://userid:password@www.anywhere.com/完全绕过了这个方法,这不是我想做的。

4

2 回答 2

1

您可以在此处找到此身份验证方式的简短描述,有关更多详细信息,您必须查找正确的标准描述 URL。

URL 示例,以防页面稍后不可用:ftp://username:password@hostname/

https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSURLConnectionDelegate_Protocol/Reference/Reference.html

如果委托未实现此方法,则使用默认实现。如果请求的有效凭据 作为 URL 的一部分提供,或者可从 NSURLCredentialStorage 获得,则 [challenge sender] 将发送 ** useCredential:forAuthenticationChallenge:和凭据。如果质询没有凭据或凭据无法授权访问,则 continueWithoutCredentialForAuthenticationChallenge: 被发送到 [challenge sender]。

于 2012-09-27T14:33:29.747 回答
1

本质上 - 一些 URL 的结构包含用户名和密码

http://userid:password@www.anywhere.com/

如果您将具有这种格式的 URL 传递给函数,如果格式正确,它将返回 URL 的密码部分,否则返回空字符串(CFSTR(""))

以同样的方式,您可以使用该CFURLCopyUserName功能获取用户 ID。

于 2012-09-27T14:37:05.340 回答