Загрузка асинхронного изображения с заголовком 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"];
}
Другие вопросы по тегам