Проблема с AFNetworking POST AFHTTPRequestOperation Queue

Я запрашиваю данные с сервера, но у меня проблема в том, что он сначала вызывает файл cookie, чем данные, в отличие от того, что сначала должны быть данные, а не файл cookie. Итак, пожалуйста, как я могу решить эту проблему?

Я видел эту проблему через приложение Charles.

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:string
   parameters:@{@"data": @"<p_LM act=\"info\"/>", @"cookie": [temp objectForKey:@"cookie"]}
      success:^(AFHTTPRequestOperation *operation, id responseObject) {

          NSDictionary *dic  = (NSDictionary *)responseObject;

          NSString *parity = [dic objectForKey:@"Response"];
}

person CAN    schedule 14.11.2014    source источник


Ответы (1)


Parameters это NSDictionary. Когда AF сериализует запрос, он использует дескриптор алфавитной сортировки для NSDictionary:

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)];

Итак, у вас есть два варианта:

  • переименуйте «данные», например. "ааа" тогда будет над "куки"
  • измените sortDescriptor в методе AFQueryStringPairsFromKeyAndValue модуля AF и позаботьтесь об этом, когда будете выполнять pod update.

отредактировано, чтобы указать второй способ

если вы хотите изменить модуль кода AFNetworking, чтобы он работал на вас, выполните:

  1. поиск метода AFQueryStringPairsFromKeyAndValue в модуле AFNetworking

  2. изменить напр.

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)];
    

    to

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:NO selector:@selector(compare:)];
    

    (просто измените алфавитную сортировку снизу вверх)

  3. а затем, если вы обновите свой модуль AFNetworking в следующий раз через год или раньше, просто добавьте это изменение еще раз, потому что ваше изменение будет переопределено новым обновлением модуля...

person kabarga    schedule 14.11.2014
comment
Да, когда я меняю данные на aata, они становятся первыми. Как я могу позаботиться об обновлении модуля? - person CAN; 14.11.2014
comment
pod update перезапишет ваши локальные изменения. поэтому вам нужно добавлять изменения кода каждый раз, когда вы будете обновлять модуль AF. это не так часто. проверьте эту ссылку: stackoverflow.com/questions/16613464/ - person kabarga; 15.11.2014
comment
Извините, я не мог понять решение. Не могли бы вы объяснить это подробнее, пожалуйста? - person CAN; 15.11.2014