2013-04-28 13 views
14

EGOImageCacheからSDWebViewに画像をキャッシュするコードを変更しました。残念ながら、カスタムHTTPヘッダーを設定する方法を知らないので、イメージを取得できるように認証を送信する必要があります。私は適切な場所でNSURLRequestを拡張したので、EGOImageCacheで簡単にできました。しかし、私はSDWebView.frameworkでそれを行う方法を知らない。私は、ヘッダを見るとi'veはlibには、HTTPヘッダをサポートしているようだSDWebImageとカスタムHTTPヘッダーを設定していますか?

/** 
* 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; 

を含むSDWebImageDownloader.hのメソッドを発見しました。しかし、私はUIImageView + WebCache.hを使用するので、ヘッダーを設定するオプションが表示されません。私のコードで私は電話

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

HTTPヘッダーの設定方法を教えてもらえますか?

答えて

38

私は同じ問題を抱えていた、と私は作ってみました:

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

しかし、ヘッダが送信されませんでした。いくつかの試行の後、私は問題を見つけた、sharedDownloaderのSDWebImageDownloaderはSDWebImageDownloaderの新しいインスタンスを作成するので、そのインスタンスにヘッダーを置くと、実際にイメージをダウンロードするインスタンスにヘッダーは含まれません。

私はこれを作る解かました:

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

私はそれを試してみます。あなたの返信をありがとう!それは多くの開発者がその機能を必要としていないようです。 – rockstarberlin

+1

あなたはより多くのupvotesを値する。この回答は100%正確で、元のコードは直感的ではありません。 – Emilio

+4

なぜ、神ですか?なぜこのSDKはこのように動作しますか?どうして? – d512

2

私はそれはかなり古いです知っているが、私のために働いたものを共有することを助けることができませんでした。私は、ヘッダーlogintokenのログイントークン値を設定する必要がありました。だから、コードのこの作品は、私が望んでいた -

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

私は基本認証を使用してsharedDownloaderusernamepasswordを設定しています助け:

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

スウィフトバージョン

let imageDownloader = SDWebImageDownloader.shared() 
imageDownloader.setValue("Username", forHTTPHeaderField: "X-Oauth-Username") 
関連する問題