NSURLConnection и Основная Аутентификация HTTP в iOS

Я должен вызвать начальную букву GET HTTP request с Основным Authentication. Это было бы первым разом, когда запрос отправлен к серверу, и я уже имею username & password таким образом, нет никакой потребности в вызове со стороны сервера для авторизации.

Первый вопрос:

  1. Делает NSURLConnection должны быть установлены как синхронные сделать Основного Автора? Согласно ответу на этом сообщении, кажется, что Вы не можете сделать Основного Автора, если Вы выбираете асинхронный маршрут.

  2. Любой знает о любом некотором примере кода, который иллюстрирует Основного Автора на a GET request без потребности в ответе проблемы? Документация Apple показывает пример, но только после того, как сервер выпустил запрос проблемы клиенту.

Я являюсь довольно новым сетевая часть SDK, и я не уверен, какой из других классов я должен использовать для получения этой работы. (Я вижу NSURLCredential класс, но кажется, что это используется только с NSURLAuthenticationChallenge после того, как клиент запросил на авторизованный ресурс с сервера).

84
задан Community 23 May 2017 в 12:02
поделиться

2 ответа

Я использую асинхронную связь с MGTwitterEngine и он устанавливает разрешение в NSMutableURLRequest (theRequest), как:

NSString *authStr = [NSString stringWithFormat:@"%@:%@", [self username], [self password]];
NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodingWithLineLength:80]];
[theRequest setValue:authValue forHTTPHeaderField:@"Authorization"];

Я не верю, что этот метод требует прохождения через цикл вызова, но я могу ошибаться

.
130
ответ дан 24 November 2019 в 08:27
поделиться

Не могли бы вы сказать мне, в чем причина ограничения длины строки кодирования до 80 в вашем примере кода? Я думал, что заголовки HTTP имеют максимальную длину примерно 4 КБ (или, может быть, некоторые серверы не занимают больше времени). - Джастин Гальзич, 29 дек. 2009 г., 17:29

Это не ограничение до 80, это опция метода base64EncodingWithLineLength в NSData + Base64.h / m, где вы можете разбить закодированную строку на несколько строк, которые полезен для других приложений, таких как передача nntp. Я считаю, что 80 выбрано автором движка твиттера как длина, достаточная для размещения большинства результатов, закодированных пользователем / паролем, в одной строке.

0
ответ дан 24 November 2019 в 08:27
поделиться