2016-07-12 2 views
0

Эти данные прекрасно переносятся на мой веб-сервис в «Postman», но не в AFNetworking, поэтому я знаю, что это проблема с обработкой AFNetworking или AFNetworking NSDictionary.AFNetworking POST параметр с подчеркиванием

Я использую следующий простой код на сообщение:

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, все, кажется, обрабатывается. (Конечно, я получаю сообщение об ошибке с моего сервера, говоря, что «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)" 

Я не могу понять, почему «_» является таким вопросом. Я могу прочитать его на сервере FROM в запросах GET, но когда я пытаюсь выполнить POST, он терпит неудачу.

ответ

0

Ну, для тех, кто с этой же проблемой. Я понял проблему. В принципе, запрос-запрос по умолчанию для AFNetworking не допускает специальных символов. Вы должны изменить эту строку кода ...

newSession.requestSerializer = [AFJSONRequestSerializer serializer]; 

в этой строке кода ...

newSession.requestSerializer = [AFJSONRequestSerializer serializerWithWritingOptions:NSJSONWritingPrettyPrinted]; 

«довольно» позволяет специальных символов и позволил мой предыдущий код для работы только хорошо.

Потребовалось время, чтобы разобраться в этом, поэтому, надеюсь, это кому-то поможет.