Je reçois cette réponse dans error.userInfo lors de la demande de POST de AFNetworking
. Quelqu'un peut-il m'indiquer quelque chose qui me manque ou qui doit être réparé par mon serveur?
Échec de la demande avec erreur: Domaine d'erreur = AFNetworkingErrorDomain Code = -1016 "Type de contenu attendu {(" Text/json ", " Application/json ", "text/javascript")}, got text/html "UserInfo = 0x6d7a730 {NSLocalizedRecoverySuggestion = test de l'index, AFNetworkingOperationFailingURLResponseErrorKey =, NSErrorFailingURLKey = http: //54.24.14.20. type de contenu {( "text/json", "application/json", "text/javascript")}, got text/html, AFNetworkingOperationFailingURLRequestErrorKey = http: // 54.245.14.201/>}, { AFNetworkingOperationFailingURLRequestErrorKey = "http://54.245.14.201/>" ; AFNetworkingOperationFailingURLResponseErrorKey =" "; NSErrorFailingURLKey" "; .14.201 /"; NSLocalizedDescription = "Type de contenu attendu {(\ n \" text/json\",\n \" application/json\",\n
\"text/javascript \"\n)}, vous avez text/html "; NSLocalizedRecoverySuggestion =" test d'index ";}
Et j'utilise ce code;
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
[httpClient setDefaultHeader:@"Accept" value:@"application/json"];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"Ans", @"name",
@"29", @"age",
nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/" parameters:params];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"Success");
NSLog(@"%@",JSON);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
NSLog(@"Failure");
}];
[operation start];
[operation waitUntilFinished];
Par défaut, AFJSONRequestOperation
accepte uniquement les types de contenu "text/json", "application/json" ou "text/javascript" du serveur, mais vous obtenez "text/html".
Une réparation sur le serveur serait préférable, mais vous pouvez également ajouter un type de contenu "text/html" acceptable dans votre application:
[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
Cela a fonctionné pour moi, espérons que cela aide!
Avez-vous envoyé cette demande POST par AFHTTPClient
? Si tel est le cas, vous devez définir la classe d'opération correspondante:
AFHTTPClient * client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://localhost:8080"]];
// ...
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
[client setDefaultHeader:@"Accept" value:@"application/json"];
// ...
// EDIT: Use AFHTTPClient's POST method
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"Ans", @"name",
@"29", @"age", nil];
// POST, and for GET request, you need to use |-getPath:parameters:success:failure:|
[client postPath:@"/"
parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"RESPONSE: %@", responseObject);
// ...
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (error)
NSLog(@"%@", [error localizedDescription]);
// ...
}
Définissez vos valeurs dans ce code et vérifiez si cela fonctionne pour vous
AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:[NSURL URLWithString:kBASEURL]];
NSString *_path = [NSString stringWithFormat:@"groups/"];
_path = [_path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%s %@",__PRETTY_FUNCTION__,_path);
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST"
path:_path
parameters:postParams];
[httpClient release];
AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
if ([JSON isKindOfClass:[NSArray class]] || [JSON isKindOfClass:[NSDictionary class]]) {
completed(JSON);
}
else {
}
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@" response %@ \n error %@ \n JSON %@",response,error,JSON);
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
errored(error);
}];
NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
[queue addOperation:operation];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];