Код ошибки: Error Domain = NSCocoaErrorDomain Code = 3840 «Текст JSON не начинался с массива или объекта, и опция, позволяющая не устанавливать фрагменты». - PullRequest
0 голосов
/ 16 мая 2018

Я сталкиваюсь с этой ошибкой, когда использую метод afNetworking PUT.Пожалуйста, помогите.

Ошибка домена = NSCocoaErrorDomain Code = 3840 «JSON-текст не начинался с массива или объекта и опция, позволяющая не устанавливать фрагменты».UserInfo = {NSDebugDescription = Текст JSON не начинался с массива или объекта, и параметр, позволяющий не устанавливать фрагменты.}

Вот мой код: -

 NSInteger intUserID = [[prefs stringForKey:@"user_id"] integerValue];
                NSInteger intProdID = [_strProdID integerValue];

                AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
                AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
                [serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
                [serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
                manager.requestSerializer = serializer;

                NSDictionary *params = @{@"In d":@(1),@"user_id":@(intUserID),@"product_id":@(intProdID)};

                [manager PUT:@"http://api.XXX.com/api/product/wishlist_add" parameters:params success:^(NSURLSessionTask *task, id responseObject) {


                }failure:^(NSURLSessionTask *operation, NSError *error) {
                    NSLog(@"Error Code : %@", error);
                }];

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Эта ошибка возникает в основном по двум причинам.

  1. Сервер не может проанализировать данные из вашего запроса

  2. Отправка неправильного запроса

Сначала попробуйте позвонить в веб-службу почтальона. Если ваш веб-сервис звонит успешно и вы получаете данные ответа, проверьте этот ответ json, используя валидатор json. Если ответ json действителен, проверьте ваш запрос.

В большинстве случаев проблема связана с запросом, который мы отправили на подачу.

Счастливое кодирование.

0 голосов
/ 16 мая 2018

В нем четко сказано, что вы отправили неверный формат JSON. Значит есть два возможность.

  • Либо вы отправили неверный JSON.

  • Или ваш сервер не может проанализировать данные из вашего запроса.

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

NSInteger intUserID = [[prefs stringForKey:@"user_id"] integerValue];
NSInteger intProdID = [_strProdID integerValue];
NSDictionary *params = @{@"In d":@(1),@"user_id":@(intUserID),@"product_id":@(intProdID)};

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params
    options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
    error:&error];

if (! jsonData) {
    NSLog(@"Got an error: %@", error);
} else {
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
    [serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    manager.requestSerializer = serializer;

    [manager PUT:@"http://api.XXX.com/api/product/wishlist_add" parameters:jsonString success:^(NSURLSessionTask *task, id responseObject) {
        }failure:^(NSURLSessionTask *operation, NSError *error) {
        NSLog(@"Error Code : %@", error);
        }];
}

Найти ссылку здесь

Обновление:

Работает нормально. Пожалуйста, смотрите прикрепленный скриншот ниже.

enter image description here

Пожалуйста, убедитесь, что значение user_id и product_id не должно быть nil

...