Обязательно начните с
[NSHTTPCookieStorage sharedHTTPCookieStorage].cookieAcceptPolicy =
NSHTTPCookieAcceptPolicyAlways;
Но, как упомянул @JoelFan, проблема может заключаться в том, что ваша строка User Agent вызывает сбой ASP.NET при входе без файлов cookie. Вместо ответа, который включает
Set-Cookie: .ASPXAUTH = действительно длинное шестнадцатеричное число
возвращает перенаправление на что-то вроде
Местоположение: / (F ( long-sorta-base64-выглядящая строка )) /
Строка агента пользователя UIWebView по умолчанию выглядит примерно так:
User-Agent: Mozilla / 5.0 (iPad; CPU OS 7_0_2, как Mac OS X) AppleWebKit / 537.51.1 (KHTML, как Gecko) Mobile / 11A501
но ASP.NET это не нравится. Safari отправляет что-то вроде этого:
User-Agent: Mozilla / 5.0 (iPad; CPU OS 7_0_2, как Mac OS X) AppleWebKit / 537.51.1 (KHTML, как Gecko) Версия / 7.0 Мобильный / 11A501 Safari / 9537.53
Сделайте следующее на ранней стадии, возможно, в вашем AppDelegate.m
// DON'T try to reuse a UIWebView for this.
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectZero];
// This webview has already decided to use the default user agent string.
// let's use javascript to get the existing user agent string
NSString *userAgent = [wv stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
// let's tack on some stuff to make ASP.NET happy
userAgent = [userAgent stringByAppendingString:@" Version/7.0 Safari/9537.53"];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent": userAgent}];
// New UIWebViews inited after here will use the user agent string you made.