SDWebImage和设置自定义HTTP标头?

roc*_*lin 20 uiimageview image-caching http-headers sdwebimage

我刚刚将用于缓存图像的代码从EGOImageCache更改为SDWebView.不幸的是我不知道如何设置自定义HTTP标头,因为我必须发送身份验证才能获取图像.使用EGOImageCache很容易,因为我已经在适当的地方扩展了NSURLRequest.但是我不知道如何使用SDWebView.framework来做到这一点.我看到标题,我在SDWebImageDownloader.h中找到了包含的方法

    /**
 * Set a value for a HTTP header to be appended to each download HTTP request.
 *
 * @param value The value for the header field. Use `nil` value to remove the header.
 * @param field The name of the header field to set.
 */
- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;

/**
 * Returns the value of the specified HTTP header field.
 *
 * @return The value associated with the header field field, or `nil` if there is no corresponding header field.
 */
- (NSString *)valueForHTTPHeaderField:(NSString *)field;
Run Code Online (Sandbox Code Playgroud)

似乎lib确实支持HTTP头.但是因为我使用UIImageView + WebCache.hi无法看到设置标题的选项.在我的代码中我打电话

[self.imageView setImageWithURL:[NSURL URLWithString:themeImageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何设置HTTP标头?

Nés*_*tor 42

我有同样的问题,我试图做:

SDWebImageDownloader *manager = [SDWebImageDownloader sharedDownloader];
[manager setValue:username forHTTPHeaderField:@"X-Oauth-Username"];
Run Code Online (Sandbox Code Playgroud)

但是标题没有发送.经过一些尝试,我遇到了问题,sharedDownloader的SDWebImageDownloader创建了一个新的SDWebImageDownloader实例,所以当你把标题放在那个实例时,真正下载图像的实例没有标题.

我已经解决了这个问题:

SDWebImageDownloader *manager = [SDWebImageManager sharedManager].imageDownloader;
[manager setValue:username forHTTPHeaderField:@"X-Oauth-Username"];
Run Code Online (Sandbox Code Playgroud)

  • 为什么神?为什么这个SDK以这种方式工作?为什么? (4认同)