Загрузка асинхронного изображения с заголовком Objectice-C
Я пытаюсь загрузить изображение асинхронно с этой библиотекой https://github.com/rs/SDWebImage#using-asynchronous-image-caching-independently
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
GalleryImageCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ImageCell" forIndexPath:indexPath];
PSGalleriesImage* imagen = [self.Images objectAtIndex:indexPath.row];
[cell.Image setImageWithURL:[NSURL URLWithString:imagen.link]];
return cell;
}
Изображение загружается и работает нормально, но сервер возвращает изображение-заполнитель, потому что я не отправляю auth_token. Аутентификационный токен его предполагается отправить в заголовок X-PS-Auth-Token
Есть ли способ загрузить изображение асинхронно, добавив заголовок?
2 ответа
Решение
Как сказал Клаудио, мне просто удалось сменить библиотеку, и она сделала свое дело. Здесь я размещаю код:
это идет в SDWebImageDownloader.m:
- (id)init
{
if ((self = [super init]))
{
_executionOrder = SDWebImageDownloaderFIFOExecutionOrder;
_downloadQueue = NSOperationQueue.new;
_downloadQueue.maxConcurrentOperationCount = 2;
_URLCallbacks = NSMutableDictionary.new;
//CHANGES HERE
NSMutableDictionary* headers = [[NSMutableDictionary alloc]init];
[headers setObject:@"image/webp,image/*;q=0.8" forKey:@"Accept"];
[headers setObject:@"image/webp,image/*;q=0.8" forKey:@"Accept"];
[headers setObject:[AppData GetSessionToken] forKey:@"X-PS-Auth-Token"];
_HTTPHeaders = headers;
//CHANGES HERE
_barrierQueue = dispatch_queue_create("com.hackemist.SDWebImageDownloaderBarrierQueue", DISPATCH_QUEUE_CONCURRENT);
}
return self;
}
Если вы не хотите изменять библиотеку, вы можете установить свои заголовки http в imageDownloader, возможно, в вашем applicationDidFinishLaunching:
-(void)configureSDWebImage
{
SDWebImageDownloader *webImageDownloader = [SDWebImageManager sharedManager].imageDownloader;
[webImageDownloader setValue:@"YourHTTPValue" forHTTPHeaderField:@"YourHTTPHeader"];
}