Несоответствие между JSON из API, полученного приложением IOS, и просмотром в Postman или браузере - PullRequest
1 голос
/ 24 июня 2019

Я использую NSURLSession для получения JSON от API, написанного на PHP, который извлекает из базы данных MYSQL.

Для одного запроса из определенной таблицы MYSQL телефон не может прочитать JSON, созданный API, даже если он выглядит хорошо в Postman и браузере. Фактически, я настроил другую таблицу и запрос для получения точно такого же JSON, и телефон может прочитать его без каких-либо проблем. Единственное, о чем я могу думать, это то, что в JSON есть невидимые символы из таблицы задач и запросов, которые отбрасывают вещи. Я сравнил заголовки запросов из двух таблиц в Почтальоне и они совпадают.

Известно ли, что у NSURLSession есть проблемы со скрытыми символами и т.п.?

Вот как выглядит JSON в виде почтальона:

{
    "comment": [
        {
            "response": "you haven't been paying attention"
        }
    ]
}

Вот что показывает браузер:

"comment":[{"response":"you haven't been paying attention"}]}

Вот что показывает консоль Xcode:

comment = "0(NSNull)"

Вот код Objective-C:

NSURL *dataUrl = [NSURL URLWithString:surl];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *data =[session dataTaskWithURL:dataUrl completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSData *jsonFeed = data;
        NSLog(@"jsonFeed is%@",jsonFeed);
        if (data != nil) {
             NSDictionary* json = [NSJSONSerialization JSONObjectWithData:jsonFeed
                                                         options:kNilOptions
                                                           error:&error];
    NSLog(@"json in async is:%@",json);
        }
    }];
    [data resume];

1 Ответ

1 голос
/ 24 июня 2019

Я подозреваю, что вы ошибаетесь Content-Type.Пожалуйста, передайте правильный Content-Type в запросе.

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

Создать запрос, используя NSMutableURLRequest, Вот хороший пример, чтобы сделать запрос, пожалуйста, отметьте его. Ссылка

...