логин работает в Safari, но не в UIWebView

У меня есть мертвое простое приложение для iOS, которое просто отображает UIWebView отображающий определенный веб-сайт, для которого требуется логин. Если я запустил приложение и попытаюсь войти в систему, он просто обновит страницу входа (без сообщения об ошибке). Если я использую Safari, я могу войти на тот же сайт в порядке. Что я могу сделать неправильно в своем UIWebView ? В случае, если это имеет значение, сайт использует SSL / https.

Оказалось, что проблема такова : Asp.Net Forms Authentication при использовании iPhone UIWebView

(UIWebView отправляет нечетный заголовок User Agent, который ASP.NET не распознает, поэтому он считает, что он не может обрабатывать файлы cookie. Это, по-видимому, было исправлено в ASP.NET 4.5, и даже в более ранних версиях вы можете исправить его на сервере, если у вас есть доступ к сайту ASP.NET)

и ответ был здесь: Изменить агент пользователя в UIWebView (iPhone SDK)

который связан с: http://www.mphweb.com/ru/blog/easily-set-user-agent-uiwebview

с критической частью заключается в том, чтобы поместить этот код в код запуска приложения:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", @"UserAgent", nil]; [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; } 

Это изменяет агент пользователя. Есть удивительное количество других способов сделать это, некоторые чрезвычайно сложные (один из которых называется «swizzling»), и большинство из них не работают.

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

Давайте будем гением компьютера.