使用下划线

时间:2016-07-12 03:16:04

标签: json post afnetworking

这些数据非常适合我的网站服务" Postman"但不是AFNetworking,所以我知道AFNetworking或AFNetworking处理NSDictionary的问题。

我使用以下简单代码发布:

AFHTTPSessionManager *newSession = [AFHTTPSessionManager manager];
        newSession.requestSerializer = [AFJSONRequestSerializer serializer];
        newSession.responseSerializer = [AFJSONResponseSerializer serializer];
NSDictionary *tryParameters = @{@"tripID": @"1234", @"tailNum": @"N15HEHE", @"legNum": @"1", @"file_date": @"2016"};
[newSession POST:HTTP_POST_TRIP_DATA parameters:tryParameters progress:^(NSProgress * _Nonnull uploadProgress) {
            NSLog(@"TRY");
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

            NSString *status = [responseObject valueForKey:@"status"];

            NSLog(@"RESPONSE: %@", responseObject);

            if ([status isEqualToString:@"success"]) {

                files(YES);
            } else {

                files(NO);
            }

        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            //NOT success
            files(NO);   
        }];

在最后" tryParameters"我有一个键/值" file_date" :@" 2016"。这个下划线似乎是个问题。如果我删除" _" (下划线)来自file_date键,一切似乎都在处理。 (当然,我的服务器收到错误,说#34; file_date"从未给出过。)。但如果我离开" _"在我的" file_date"键,POST请求失败,我得到......

[0] (null)  @"com.alamofire.serialization.response.error.response" : (no summary)   
[1] (null)  @"NSErrorFailingURLKey" : @"http://xxxxxxx.com/xxx/createTrip"  
[2] (null)  @"com.alamofire.serialization.response.error.data" : (no summary)   
[3] (null)  @"NSLocalizedDescription" : @"Request failed: unauthorized (401)"   

我无法弄清楚为什么" _"是这样的问题。我可以在GET请求中从FROM我的服务器中读取它,但是当我尝试POST时,它会失败。

1 个答案:

答案 0 :(得分:0)

好吧,对于有同样问题的人。我解决了这个问题。 基本上,AFNetworking的默认requestSerializer不允许使用特殊字符。你必须改变这行代码......

newSession.requestSerializer = [AFJSONRequestSerializer serializer];

到这行代码......

newSession.requestSerializer = [AFJSONRequestSerializer serializerWithWritingOptions:NSJSONWritingPrettyPrinted];

"漂亮"选项允许特殊字符,并允许我以前的代码工作得很好。

需要一段时间才能解决这个问题,所以希望这有助于某人。