Я ищу хороший учебник по использованию асинхронного запроса NSURLConnection. Я смотрел вокруг в stackoverflow и Google, но не смог найти его. Это может быть дубликат таких вопросов, как здесь. Но, пожалуйста, направьте меня в правильный учебник, раньше я использовал ASIHTTPRequest, но раньше я не использовал библиотеку, предоставленную Apple.Асинхронный учебный план NSURLConnection
ответ
Я бы предоставил вам один написанный мной, однако я бы настоятельно рекомендовал использовать AFNetworking, это обертка над системой NSURLConnection/NSURLRequest, которая имеет намного более чистый поток, вы также можете использовать базовые NSURLRequests/Connections вместе с этим регулярные NSOperationQueues. В библиотеке также используются какао-стручки, и, честно говоря, вы действительно не можете стать намного чище, чем это.
NSOperationQueue *mainQueue = [[NSOperationQueue alloc] init];
[mainQueue setMaxConcurrentOperationCount:5];
NSURL *url = [NSURL URLWithString:@"http://192.168.0.63:7070/api/Misc/GetFuelTypes"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:@{@"Accepts-Encoding": @"gzip", @"Accept": @"application/json"}];
[NSURLConnection sendAsynchronousRequest:request queue:mainQueue completionHandler:^(NSURLResponse *response, NSData *responseData, NSError *error) {
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)response;
if (!error) {
NSLog(@"Status Code: %li %@", (long)urlResponse.statusCode, [NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode]);
NSLog(@"Response Body: %@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
}
else {
NSLog(@"An error occured, Status Code: %i", urlResponse.statusCode);
NSLog(@"Description: %@", [error localizedDescription]);
NSLog(@"Response Body: %@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
}
}];
Объект mainQueue используется для запросов на маршрутизацию и управления количеством отправленных одновременно. Это можно использовать разными способами, я обычно использую их для категориального запроса (Аутентификация, Главная, Очередь загрузки)
один раз внутри блока вы создаете локальный запрос NSHTTPURLResponse, используя возвращаемый ответ. Это необходимо, если вы хотите вернуть код состояния. (не существует в стандартном объекте NSURLResponse)
responseData - это данные, которые обычно можно преобразовать прямо в строку или выполнить через десериализатор для получения данных, пригодных для восприятия человеком.
Довольно простое объяснение, делегаты вам неприятности, если вы не имеете ни малейшего представления о том, как управлять несколькими запросов от одного объекта (вероятно, почему я предпочитаю блоки) :-)
Как всегда делегаты или блоки, которые вы хотите, чтобы вызвать ваш пользовательский интерфейс обновится после получения ответа, но не будет сдерживаться в ожидании завершения запроса, если вы загружаете данные в таблицу, вы будете называть запрос на загрузку и предоставлять некоторую форму прогресса, сообщая им, что запрос после получения данных вы удаляете hud и перезагружаете данные таблицы. HUDs ДОЛЖНЫ быть вызваны в основной поток, поэтому вам определенно нужно будет это обработать, я обычно просто создаю расширения и использую performSelectorOnMainThread, однако лучшим способом может быть обертывание вашей функции в dispatch_async и вызов вас - это показать/скрывать код вне что.
Спасибо Holyprin, я знаю о AFNetworking и ASIHTTPRequest. Однако мне не разрешено использовать сторонние библиотеки, вот почему я пытаюсь начать с нуля. Так что было бы здорово, если бы вы предоставили мне свой учебник. – user2070420
Угадайте, что имеет смысл, я напишу здесь несколько раз. – Holyprin
Как сообщить своему пользовательскому интерфейсу, что задача выполнена, скажу, что я загружаю некоторые изображения, чтобы обновить себя. – user2070420
- 1. Практический учебный план обучения Grails
- 2. Планируемый учебный план по самообучению?
- 3. Асинхронный NSURLConnection с NSOperation
- 4. Асинхронный вызов NSURLConnection
- 5. Асинхронный NSURLConnection Броски EXC_BAD_ACCESS
- 6. Асинхронный NSURLConnection прерывает таймеры
- 7. IOS - Асинхронный NSURLConnection внутри NSOperation
- 8. Как сделать асинхронный NSURLConnection внутри NSOperation?
- 9. IPHONE SDK: NSURLConnection асинхронный/ждать завершения ошибка?
- 10. nsurlconnection по умолчанию какой? Синхронный или асинхронный?
- 11. Как запустить асинхронный NSURLConnection внутри NSOperation?
- 12. реализовать асинхронный метод с использованием NSURLConnection
- 13. Асинхронный NSUrlConnection не на основной runloop
- 14. Как преобразовать из синхронного в асинхронный NSURLConnection
- 15. Асинхронный вызов NSURLConnection задерживается при его ответе
- 16. opta planner учебный план назначить конкретный номер для курса
- 17. Загрузка NSURLConnection продолжается, когда приложение переходит на задний план
- 18. Тестирование и асинхронный ответ запроса NSURLConnection с помощью Xcode
- 19. Использует асинхронный NSURLConnection для получения извлечения локального файла?
- 20. Почему асинхронный NSURLConnection делает UI вялым на iOS?
- 21. Подтверждение NSURLConnection
- 22. .net многопоточный учебный материал
- 23. Учебный выпуск LIBLINEAR
- 24. OpenNLP предложение учебный пример
- 25. Учебный процесс Autotools
- 26. HTML-типы - учебный заказ?
- 27. Java - учебный заказ
- 28. WCF Учебный материал
- 29. Учебный материал SQL-запросов
- 30. Создание и отмена NSURLConnection
Есть ли конкретные детали, которые вы не понимаете? В ядре его всего несколько методов ... – jrturton
Да, я пытаюсь понять этот метод sendAsynchronousRequest: queue: completionHandler: So Как мне сообщить, что запрос обработан. Что именно делает это завершениеHandler? Это правильный метод для обработки асинхронных запросов? Или существуют какие-либо другие методы. – user2070420
Да, так или методы делегата, это хорошо. Вы знакомы с блоками? – jrturton