Вызов API AFNetworking 3.0 multipart / form-data без файла дает ошибку - PullRequest
0 голосов
/ 20 февраля 2020

Я прилагаю скриншот Почтальона

enter image description here

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

- (void)updateActivityQuantity:(NSDictionary *)quantityDic{
    NSString *strURL = [NSString stringWithFormat:@"%@/%@", MAINTAIN_BASEURL,JobDetailCommonURL];

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    NSURLSessionTask *task = [manager POST:strURL parameters:quantityDic constructingBodyWithBlock:nil  progress:nil success:^(NSURLSessionTask *task, id responseObject) {
        NSLog(@"responseObject = %@", responseObject);
    } failure:^(NSURLSessionTask *task, NSError *error) {
        NSLog(@"error = %@", error);
    }];

    if (!task) {
        NSLog(@"Creation of task failed.");
    }
}

Как мне успешно ответить с помощью AFNetworking?

1 Ответ

0 голосов
/ 20 февраля 2020

Вы не должны сериализовать ваш менеджер запросов для JSON. Вы можете сериализовать ваш менеджер для многоэлементных данных формы, как это

[manager.requestSerializer setValue:@"multipart/form-data; boundary=something" forHTTPHeaderField:@"Content-Type"]; 
manager.requestSerializer = [AFHTTPRequestSerializer serializer]; 

И вам нужно сериализовать и кодировать значение ключа 'events' в виде строки, если вы не делали этого раньше, как показано ниже, так как это JSON возьмите объект и добавьте его в свой словарь amountDi c.

NSDictionary *events = @[@{@"event_time": @"564545454", ....}];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:events options:0 error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
...