Мое приложение использует AFNetworking 2.x для получения данных из базы данных на одном из наших серверов. Все прошло отлично до этой недели или около того. Теперь мы не можем получить хотя бы одно из наших соединений для работы. Вот код.Больше не может аутентифицироваться с помощью AFNetworking/NSURLConnection с iOS10?
NSString *loginURL =
@"https://<server>/<path>/<url>";
AFHTTPRequestOperationManager *manager =
[AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer
setAuthorizationHeaderFieldWithUsername:pUserEmail
password:pUserPassword];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
AFHTTPRequestOperation *operation = [manager GET:loginURL
parameters:[self jsonDict]
success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (completionBlock) {
completionBlock(YES);
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (completionBlock) {
completionBlock(NO);
}
}];
[operation start];
}
Что действительно странно для меня, что если я иду в URL в браузере и введите на имя пользователя/пароль, я получаю доступ.
Если я пользователь Xcode 7.3.1 и запускаюсь в симуляторе, то я получаю доступ.
Если я запускаю его на своем iPhone, он терпит неудачу, и я получаю следующие 3 сообщения об ошибках.
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Notice>: N -9801
(kCFStreamErrorDomainSSL, -9801)
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Error>: HTTP load failed (error code: -1200 [3:-9801])
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Error>: NSURLConnection finished with error - code -1200
Я думаю, что что-то (NSURLConnection в iOS8 или iOS9) не рекомендуется, с iOS10, он больше не допускается, и если я обновлю к AFNetworking 3.x будет решить эту проблему, но я не являюсь абсолютно уверен.
Пользователь с iOS9 может аутентифицироваться.
Я не верю, что на сервере произошли какие-либо изменения.
с ios10 NSAppTransportSecurity NSAllowsArbitraryLoads требуется, чтобы быть правдой. Это указано в вашем проекте? –
Нет. Это идет в моем plist? –
Но зачем он работал в симуляторе? –