Utilisation de AFNetworking impossible d'obtenir les données du serveur.Problème avec l'analyse JSON avec AFNetworking?
voici mon code certains,
NSString *serviceUrl = [NSString stringWithFormat:@"%@%@", BASE_URL,serviceName];
NSString *paramString = [NSString stringWithFormat:SERVICE_PARAMS, parametersString, DB_NAME];
NSData* data = [paramString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSDictionary *parametersDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSString *postLength = [NSString stringWithFormat:@"%ld", [data length]];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[manager.requestSerializer setTimeoutInterval:SERVICE_TIMEOUT];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[manager.requestSerializer setValue:postLength forHTTPHeaderField:@"Content-Length"];
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager POST:serviceUrl parameters:parametersDictionary progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (self.delegate) {
[self.delegate onServiceSuccess:(NSDictionary *)responseObject];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (self.delegate) {
[self.delegate onServiceFailed];
}
}];
Je reçois une réponse comme ça, < 5b5b7b22 636f756e 74223a22 30227d5d 5j> mais ma réponse réelle fonctionne bien dans Postman. ici est le facteur écran
Vous avez utilisé 'AFHTTPResponseSerializer', donc l'objet de réponse est de classe' NSData'. Vous pouvez vous utiliser 'NSArray * myJSONArray = [NSJSONSerialization JSONObjectWithData: options de responseObject: 0 error: nil];', ou changer le 'AFHTTPResponseSerializer' et utiliser le' AFJSONResponseSerializer' (ou quelque chose comme ça, pas sûr du vrai nom), qui fera la désérialisation pour vous. – Larme
En outre, notez que, même sérialisé, votre réponse JSON est un NSArray, pas un NSDictionary (comme vous semblez l'avoir casté). Vous pouvez vouloir faire '[self.delegate onServiceSuccess: myJSONObjectResponseArray [0] [0]]' – Larme