SDWebImage和设置自定义HTTP头?(SDWebImage and setting cust

2019-09-01 07:44发布

从来就只是改变了我的代码缓存图像远离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;

看来,LIB不支持HTTP标头。 但是,因为我用的UIImageView + WebCache.hi不容看到那里设置标头的选项。 在我的代码调用

[self.imageView setImageWithURL:[NSURL URLWithString:themeImageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

谁能告诉我如何设置HTTP标头?

Answer 1:

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

SDWebImageDownloader *manager = [SDWebImageDownloader sharedDownloader];
[manager setValue:username forHTTPHeaderField:@"X-Oauth-Username"];

但头不发送。 一些尝试后,我遇到了问题,SDWebImageDownloader在sharedDownloader使得SDWebImageDownloader的新实例,所以当你把标题在那个情况下,真正下载图像不实例有头。

我已经解决了使这个:

SDWebImageDownloader *manager = [SDWebImageManager sharedManager].imageDownloader;
[manager setValue:username forHTTPHeaderField:@"X-Oauth-Username"];


Answer 2:

我知道这是很老,但不能帮助分担我工作。 我需要设置标题登录令牌值logintoken 。 所以,这段代码做了什么,我想 -

NSString *loginToken = // Some method to fetch login token    
[SDWebImageDownloader.sharedDownloader setValue:loginToken forHTTPHeaderField:@"logintoken"];


Answer 3:

我使用基本身份验证,并设置usernamepasswordsharedDownloader帮助:

SDWebImageDownloader *downloader = [SDWebImageDownloader sharedDownloader];
downloader.username = @"username";
downloader.password = @"password";


Answer 4:

斯威夫特版本

let imageDownloader = SDWebImageDownloader.shared()
imageDownloader.setValue("Username", forHTTPHeaderField: "X-Oauth-Username")


Answer 5:

雨燕4.1

let manager = SDWebImageManager.shared().imageDownloader
manager?.setValue("oAuthToken",forHTTPHeaderField: "AuthHeaderName")
manager?.downloadImage(with: imageURL, options: SDWebImageDownloaderOptions.useNSURLCache, progress:
                { (receivedSize, expectedSize , url) in
                // progression tracking code
            }, completed: { (image,data , error,finished) in
                if error == nil && image != nil {
                    // here the downloaded image is cached, now you need to set it to the imageView
                    DispatchQueue.main.async {
                        imageView.image = image
                        self.maskCircle(anyImage: image!)
                    }
                } else {
                    // handle the failure
                    DispatchQueue.main.async {
                        let defaultImage = UIImage(named: "defaultImage")
                        imageView.image = defImage
                        self.maskCircle(anyImage: defImage)
                    }
                }
            })


文章来源: SDWebImage and setting custom HTTP headers?