プロジェクトでネットワークレイヤーとしてAFNetworkingを使用しています。 イメージの場合、キャッシュに関するいくつかの問題があり、フレームワークを3.0バージョンに更新しました。AFNetworking 3.0 GET/POSTでacceptableContentTypesが設定され、画像のキャッシュがクリアされる
更新プロセス中に、メディアコンテンツ(イメージとビデオ)を取得するリクエストにいくつかの問題があります。
これは私のクラスである:
+ (void)requestWithMethod:(NSString*)methodTypeValue path:(NSString*)pathValue parameters:(NSDictionary *)params token:(NSString*)token debug:(BOOL)debug completionHandler:(void (^)(id result, NSError *error))block {
if(debug){
NSLog(@"Method Type = %@ \n",methodTypeValue);
NSLog(@"Link = %@ \n",pathValue);
NSLog(@"Token = %@", token);
}
NSString *linkRequest = [NSString stringWithFormat:@"%@%@",GatewayRoot,pathValue];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSMutableURLRequest *req = [[AFJSONRequestSerializer serializer] requestWithMethod:methodTypeValue URLString:linkRequest parameters:nil error:nil];
[req setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
if (token) {
[req setValue:token forHTTPHeaderField:@"AccessToken"];
}
[[manager dataTaskWithRequest:req completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (!error) {
if (debug) {
NSLog(@"response:\n %@ \n",responseObject);
}
block(responseObject,nil);
} else {
NSLog(@"Error: %@, %@, %@", error, response, responseObject);
block(nil, error);
}
}] resume];
}
私がテストをしたし、すべてが正常な要求に関連結構です。 私は、サーバーからいくつかの画像や動画をフェッチする必要があると私は、このエラーが表示されます。
NSLocalizedDescriptionは=要求は失敗しました:容認できないコンテンツタイプを:画像/ PNG NSLocalizedDescription =要求が失敗しました:容認できないコンテンツタイプ:ビデオ/ MP4を
私はこの方法でコンテンツタイプを設定しようとしました:
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"image/jpeg",@"video/mpeg",...nil];
manager.responseSerializer.acceptableContentTypes =[manager.responseSerializer.acceptableContentTypes setByAddingObject:@"image/jpeg",@"video/mpeg",...nil];
受け入れ可能なコンテンツタイプを設定する方法を教えてください。
イメージキャッシュに関する他の問題があります:古いバージョンでログインしてユーザープロファイルイメージを取得し、ログアウトして別の資格情報で再ログインした後、ユーザープロファイル用に同じイメージを受信しましたAFNetworkingの画像キャッシュに問題がありました)。
クリアキャッシュリクエストフローを手伝ってもらえますか?
ありがとうございました!
あなたの質問とは無関係に、 'AFJSONRequestSerializer'を使用すると、私は' Content-Type'を自分で設定する必要はないと思います。私はAFNetworkingがあなたにそれをすると信じています。 – Rob