Je fais cela pour définir les en-têtes dans AFNetworking 4.0
- (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method URLString:(NSString *)URLString parameters:(nullable id)parameters headers:(nullable NSDictionary <NSString *, NSString *> *)headers uploadProgress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure { }
Et c'est la méthode que la nouvelle méthode POST définit dans AFNetworking 4.0
NSMutableDictionary *headers = [[NSMutableDictionary alloc]init]; [headers setValue:[NSString stringWithFormat:@"Bearer %@",[defaults valueForKey:@"Token"]] forKey:@"Authorization"]; [manager POST:[NSURL URLWithString:path].absoluteString parameters:parameter headers:headers progress:nil success:^(NSURLSessionTask *task, id responseObject) { }
Tout en faisant, cela me montre l'erreur "[<__ nsdictionary0> setValue: forUndefinedKey:]: cette classe n'est pas compatible avec le codage des valeurs de clé pour l'autorisation de clé."
Veuillez me dire la bonne solution pour cela.
Merci d'avance.
3 Réponses :
J'utilise l'AFN 4.0 maintenant, mais j'ajoute également un en-tête sur le gestionnaire comme ceci:
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager]; [sessionManager.requestSerializer setValue:bearerToken forHTTPHeaderField:@"Authorization"]; and GET/POST/PUT/DELETE header I send @{} to backend
J'espère pouvoir vous aider
Je veux savoir pourquoi vous avez ajouté pour l'en-tête GET / POST / PUT / DELETE: @ {} au backend ?? car cela clarifiera clairement mon doute.
Parce que j'ai uniformément chargé l'en-tête dans sessionManager, quand je veux ajouter l'en-tête à GET / POST séparément, je ne passe pas @ {} au backend
Utilisez cette méthode de blocage
NSDictionary *postparam = @{@"action":@"versionCode", @"version":version,@"device_type":@"iOS" }; NSArray *heder = @[@{@"Authorization":[NSString stringWithFormat:@"Bearer %@",[defaults valueForKey:@"Token"]]}]; [ServiceCalls postServiveCall:postparam headers:heder WithSuccess:^(id responseObject) { } failure:^(NSError *error) { }];
Comment utiliser ce don ci-dessous, ici vous pouvez ajouter plusieurs champs d'en-tête si vous le souhaitez
+(void)postServiveCall:(NSDictionary *)perameters headers:(NSArray *)headers WithSuccess:(void (^)(id responseObject))success failure:(void (^)( NSError *error))failure { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; if(headers.count > 0) { for (NSDictionary *headerData in headers) { [manager.requestSerializer setValue:headerData.allValues.firstObject forHTTPHeaderField:headerData.allKeys.firstObject]; } } AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil]; manager.responseSerializer = responseSerializer; NSString *url = [NSString stringWithFormat:@"%@action.php",BASEURL]; [manager POST:url parameters:perameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { success (responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failure (error) ; }]; }
p >
Merci pour votre réponse, mais votre réponse a besoin de quelques corrections.J'ai donc trouvé une solution à l'aide de la réponse donnée pour le poste.
À partir des réponses données ci-dessus, j'ai trouvé un moyen pour les réponses. Merci pour la réponse @baiyidjp et @Silversky Technology
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager setRequestSerializer:[AFHTTPRequestSerializer serializer]]; NSString *path=[[NSString alloc]initWithFormat:@"%@",URL]; NSMutableDictionary *parameter = [[NSMutableDictionary alloc]init]; [parameter setValue:@"123456" forKey:@"id"]; NSDictionary *headers = @{@"Authorization":[NSString stringWithFormat:@"Bearer %@",[defaults valueForKey:@"ApiToken"]]}; [manager POST:[NSURL URLWithString:path].absoluteString parameters:parameter headers:headers progress:nil success:^(NSURLSessionTask *task, id responseObject) { NSLog(@"Response Object response is....==%@",responseObject); } failure:^(NSURLSessionTask *operation, NSError *error) { NSLog(@"Error Last 2 Done: %@", [error localizedDescription]); }