如何在 AFNetworking 2.0 中实现带身份验证的图像下载?

Posted

技术标签:

【中文标题】如何在 AFNetworking 2.0 中实现带身份验证的图像下载?【英文标题】:How To Implement Image Download With Authentication In AFNetworking 2.0? 【发布时间】:2014-10-10 23:14:56 【问题描述】:

我有以下在 AFNetworking 1.0 中工作的图像下载功能。它是我为 AFNetworking 1.0 实现 HTTPClient 的一部分。

- (void)downloadImageWithCompletionBlock:(void (^)(UIImage *downloadedImage))completionBlock identifier:(NSString *)identifier 
NSString* urlString = identifier;

AFImageRequestOperation* operation = [AFImageRequestOperation imageRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] imageProcessingBlock:nil
                                                                                       success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
                                      
                                          //LogInfo(@"SUCCESS GETTING PHOTO: %@", response);
                                          completionBlock(image);
                                      
                                                                                       failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) 

                                                                                           LogInfo(@"ERROR GETTING PHOTO IN downloadImageWithCompletionBlock.");

                                                                                       ];
[operation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge) 
    NSURLCredential *newCredential = [NSURLCredential credentialWithUser:self.strSPUser password:self.strSPPW persistence:NSURLCredentialPersistenceForSession];
    [challenge.sender useCredential:newCredential forAuthenticationChallenge:challenge];
];
[self enqueueHTTPRequestOperation:operation];

对于我为 AFNetworking 1.0 编写的 HTTPClient 自定义代码,我没有找到一个简单的转换/升级到 AFNetworking 2.0 的方法。正如您在函数中看到的,我将凭据传递给我的 restful web 服务以下载图像。

如何在AFNetworking 2.0中实现上述图片下载功能?

【问题讨论】:

【参考方案1】:

在 AFNetworking 2 中几乎相同。AFHTTPRequestOperation 有一个 credential 属性和一个 setWillSendRequestForAuthenticationChallengeBlock: 方法。

【讨论】:

您真的需要我复制粘贴您的代码示例并将setAuthenticationChallengeBlock 替换为setWillSendRequestForAuthenticationChallengeBlock 吗?这是相同的代码。

以上是关于如何在 AFNetworking 2.0 中实现带身份验证的图像下载?的主要内容,如果未能解决你的问题,请参考以下文章

在android应用程序中实现带标签文本的概述文本字段输入

怎样在Delphi中实现在运行中实现带参数的存储过程?

[译] 在Web API 2 中实现带JSON的Patch请求

jsp中实现带滚动条的table表格

wemall app商城源码中实现带图片和checkbox的listview

如何在旧的 AFNetworking 中使用 AFNetworking 2.0+?