簡単な回答: AFNetworking
の最新バージョンを実行していることを確認してください。あなたが提供したコードに基づいて問題として私が見ることができるのはそれだけです。
長い回答: AFNetworking
の最新バージョンで説明している問題を再現しようとしましたが、できませんでした。AFNetworking を掘り下げて、JSON のエンコードがどのように行われるかを確認しました。AFHTTPClient.m:442は、NSJSONSerializationを使用して JSON 要求をエンコードします。問題をテストするために、次のコードを思いつきました。
NSError* error = nil;
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:@{@"value" : @YES} options:0 error:&error];
NSLog(@"Resulting JSON:\n\n%@\n", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
出力:
{"value":true}
だから@YES
やるべき。の代わりにとして出力されるため、コードでは使用しないでください。@(YES)
1
true
NSError* error = nil;
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:@{@"value" : @(YES)} options:0 error:&error];
NSLog(@"JSON:%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
出力:
{"value":1}
1
それで、 /0
の代わりにtrue
/として bool を送信するように AFHTTPClient を構成する必要がある方法を見つけようとしましたが、false
何も見つかりませんでした。これが私のネットワーキングコードです。
AFHTTPClient* httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://<SERVER HERE>"]];
[httpClient setParameterEncoding:AFJSONParameterEncoding];
NSMutableURLRequest *jsonRequest = [httpClient requestWithMethod:@"POST" path:@"/" parameters:@{@"value": @YES}];
AFHTTPRequestOperation *jsonOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:jsonRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"Success");
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Failure");
}];
[jsonOperation start];