1

サーバーからの写真を他のデータ (写真のコメントなど) と共に入力しようとしている UITableView があります。UITableView のテーブル セルには、 で設定された UIImageView がありsetImageWithURL:placeHolderImage:ます。問題は、プレースホルダー イメージのみが表示されていることです。

AFHTTPClient をサブクラス化し、サーバーで基本認証を使用しています。だから、私はこのようなことをしています:

[self setAuthorizationHeaderWithUsername:@"user" password:@"pass"];

サーバーに対して GET 要求を実行すると、データと画像のパスを含む JSON が取得されます。メソッド内でtableView:cellForRowAtIndexPath:、UIImageView を で設定しようとしてsetImageWithURL:placeHolderImage:いますが、画像をダウンロードするための各リクエストは 401 Authorization Required を返しています。

画像 URL への各呼び出しには、サブクラス化された AFHTTPClient にある基本認証情報が含まれていないと想定しています。その場合、setImageWithURL:placeHolderImage:基本認証情報を含むサブクラス化された AFHTTPClient を使用する方法はありますか? または、画像をダウンロードするための各呼び出しでこの基本認証を尊重するために私が取ることができる他のアプローチはありますか?

4

2 に答える 2

1

これsetImageWithURL:placeHolderImage:は非常に便利な方法ですが、これを希望どおりに機能させるには、いくつかの回避策を使用する必要がある場合があります。画像のダウンロードは通常認証を必要としないため、これはそれほど驚くべきことではありません。のコードを変更できますUIImageView+AFNetworking.m。このようにして、このsetAuthorizationHeaderWithUsernameメソッドを使用して自分自身を承認することができます。

または、ここsetImageWithURL:placeHolderImage:で使用する基になるメソッドを利用して、適切な承認ヘッダーを設定できる独自の同様のクラスを作成することもできます。これを選択する場合は、すべてを可能な限り効率的にするために、必ず同様のキャッシュメソッドを実装してください。AFImageRequestOperation

于 2012-11-13T00:51:51.797 に答える