Код ошибки -1011 при использовании AFNetWorking

Я оказываю услугу в нашей клиентской компании. И я пытаюсь получить некоторую информацию с их сервера с помощью AFNetWorking (наши клиенты рекомендуют использовать AFNetWorking). Я сделал несколько примеров с использованием AFNetWorking, и это работает. Но когда я использую один из URL-адресов наших клиентов для получения данных JSON, это не удается, и это описание ошибки:

Error Domain=com.alamofire.networking.error Code=-1011 
"Expected status code <NSIndexSet: 0x7e274f0>[number of indexes: 100 (in 1 ranges), 
indexes: (200-299)], got 403" UserInfo=0x7b64040 {NSErrorFailingURLKey=<url_hidden_for_stackoverflow>, 
NSLocalizedDescription=Expected status code <NSIndexSet: 0x7e274f0>[number of indexes: 100 (in 1 ranges), indexes: (200-299)], got 403}

Я пытаюсь найти какое-то решение, но пока не могу исправить. Вот мой код:

NSURL *url = [NSURL URLWithString:@"http://example.com/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
//[httpClient setDefaultHeader:@"Accept" value:@"text/json"];
//NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:CONST_KEY_REGISTER_UNIQUE_KEY, CONST_API_KEY_TEXT,nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"path/to/page.json" parameters:nil];
[httpClient release];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSString *status = [JSON valueForKey:@"status"];
    if ([status isEqualToString:@"OK"]) {
        NSString *uniqueId = [JSON valueForKey:@"uniqueId"];
        [UserSettings setWithKey:CONST_PROGRAM_UNIQUE_KEY value:uniqueId];
    }
    //NSString *message = [json valueForKey:@"message"];
    //NSString *error = [json valueForKey:@"error"];
    [[LoadingView instance] performSelectorOnMainThread:@selector(removeLoadingView)  withObject:nil waitUntilDone:YES];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    NSString *errorString = [error description];
    [[LoadingView instance] performSelectorOnMainThread:@selector(removeLoadingView)  withObject:nil waitUntilDone:YES];
}];
NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
[queue addOperation:operation];

Спасибо за чтение, и любая помощь или ответ будут очень признательны.

РЕДАКТИРОВАТЬ: Как сказал DarkDust: сервер запрещает мне доступ. Но я могу получить данные с сервера по базовому соединению: Вот код для получения:

NSURL *url = [NSURL URLWithString:@"http://example.com/path/to/page.json"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:CONST_CONNECTION_TIMEOUT];
rssConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
[self performSelectorOnMainThread:@selector(downloadStarted) withObject:nil waitUntilDone:NO];
if (rssConnection != nil) {
    do {
        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
    } while (!done);
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // I can get text here, but it is not JSON format
NSString *content = [NSString stringWithUTF8String:[data bytes]];
}

Интересно, почему rssConnection может получить текст JSON, а AFHTTPClient не может?


person magichero    schedule 03.11.2011    source источник
comment
Вы действительно считаете хорошей идеей публиковать внутренние/личные данные вашего клиента без запутывания?   -  person DarkDust    schedule 03.11.2011
comment
Это всего лишь тестовая страница, а не частная. Прежде чем я закончу, будет больше изменений. И в будущем для доступа потребуется ключ API, и, конечно же, я его прячу   -  person magichero    schedule 03.11.2011
comment
Тем не менее, теперь все могут видеть, кто ваш клиент. Ваш клиент может быть не очень доволен этим.   -  person DarkDust    schedule 03.11.2011


Ответы (2)


Сервер отвечает кодом ошибки HTTP 403, что означает Запрещено. Он отказывает вам в доступе. Вам нужно выяснить причину, например, прочитав журналы сервера (если можете) или попросив администратора сервера помочь вам. Это могут быть ограничения доступа к серверу, которые необходимо снять/изменить.

Редактировать: HTTP POST — это операция, которая хочет сохранить что-то на сервере. Хотя обычный GET, похоже, работает нормально в соответствии с вашим отредактированным вопросом, сейчас сохранение запрещено. Первое, что нужно сделать, это все же изучить конфигурацию сервера. Кроме того, если ваш URL-адрес указывает на скрипт (JSP, ASP и т. д.), который является единственным, что имеет смысл в вашем случае, вам необходимо изучить его, чтобы определить, почему он отказывает вам в доступе (если конфигурация сервера еще не запрещает это, должно быть, сценарий).

person DarkDust    schedule 03.11.2011
comment
Сообщение об ошибке, которое вы опубликовали, четко говорит Expected status code ..., got 403. Сервер отказывает вам в доступе. - person DarkDust; 03.11.2011
comment
Я редактирую свой пост, т.к. если я добавлю комментарий, я не смогу вам четко сказать, что мне нужно. - person magichero; 03.11.2011
comment
Спасибо за вашу помощь. Мой вопрос закрыт. Наш клиент использует этот сервер для тестирования и дает мне неправильную конфигурацию. Я могу подключить тестовый сервер методом GET. Тестовая страница представляет собой просто текстовый/обычный формат, а не формат JSON. - person magichero; 03.11.2011

В качестве справки из-за высоких результатов поиска через Google...

Для других, которые ищут возможные коды ошибок, полученные через AFNetworking, обратитесь к документации Apple для Коды системных ошибок загрузки URL, поскольку они совпадают.

NSURLErrorBadServerResponse = -1011

Возвращается, когда система загрузки URL-адресов получает неверные данные с сервера. Это эквивалентно сообщению «500 Server Error», отправляемому HTTP-серверами.

person NSMutableString    schedule 18.10.2013