Objective c 如何将NSURLCredential传递给NSURLSession?

Objective c 如何将NSURLCredential传递给NSURLSession?,objective-c,nsurlsession,nsurlcredential,Objective C,Nsurlsession,Nsurlcredential,我对此有点困惑。我有这个方法 -(BOOL)verifyAuth: (NSString*)username forPassword:(NSString*)password { NSURLSession *session = [NSURLSession sharedSession]; NSURLCredential *creds = [NSURLCredential credentialWithUser:username password:password persistence:

我对此有点困惑。我有这个方法

-(BOOL)verifyAuth: (NSString*)username forPassword:(NSString*)password
{
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLCredential *creds = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession];

    [session dataTaskWithURL:MALAuthVerifyURL completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) 
    {

         NSLog(@"%@",data);
    }];
    return YES;
}
如何将凭据传递给NSURLSession对象?苹果的文档说:

“创建NSURLCredential对象后:

对于NSURLSession,使用提供的完成处理程序块将对象传递给身份验证质询的发送方。“

但我不确定这到底意味着什么。我找不到这种用法的任何例子


谢谢。

您需要实现另一个委托方法,
-URLSession:task:didReceiveChallenge:challenge:completionHandler:

HTTP基本身份验证(NSURLAuthenticationMethodHTTPBasic)需要用户名和密码。提示用户输入必要的信息,并使用credentialWithUser:password:persistence:创建一个NSURLCredential对象

创建NSURLCredential对象后:

  • 对于NSURLSession,使用提供的完成处理程序块将对象传递给身份验证质询的发送方
  • 对于NSURLConnection和NSURLDownload,将对象传递给身份验证质询的发件人,并使用useCredential:forAuthenticationChallenge:

也许这会有帮助。

谢谢你的回复。如果您不等待服务器的质询,而是在每个请求中传递username:password,那么基本HTTP授权如何?@Joseph我的猜测是:根据您自己的NSURLSessionConfiguration创建会话,该配置具有可以设置的URLCredentialStorage属性。用nsurauthenticationmethodhttpbasic设置一个凭证/保护空间,我想它会用它来代替发出质询回调。虽然我还没试过这个。。。