Как получить пользовательский агент UIWebView

У меня проблема с одним удаленным сервером. Мое приложение делает запрос на сервер с использованием метода [NSData initWithContentsOfURL:], и в качестве ответа я получаю URL-адрес сайта, который я открываю в UIWebView.

Проблема заключается в том, что эти запросы имеют разные User-Agent, и сервер не может мне помочь, потому что он ожидает, что я отправлю все запросы с тем же User-Agent. Я знаю, как изменить User-Agent (например, Изменить агент пользователя в UIWebView (iPhone SDK)), но я действительно хочу, чтобы как-то получить UIWebView User-Agent и установите его в [NSData initWithContentsOfURL:], чтобы избежать проблем с серверной стороной

Ответ 1

Я просто столкнулся с подобной проблемой и должен был заставить агент пользователя, посланный NSURLConnection, соответствовать тому, который был отправлен UIWebView. Моим решением было создать UIWebView, а затем просто использовать javascript, чтобы вытащить пользовательский агент.

UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

Ответ 2

Как указано ниже, , вы можете вызвать Javascript в веб-просмотре:

UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

Но обращение к новому Javascript немного хакерское и создание нулевого размера WebView является бесплатным, так как у вас уже есть webView, с которым вы имеете дело.

В качестве альтернативы вы можете просто использовать собственные методы для данного webView:

NSString* ua = [webView.request valueForHTTPHeaderField:@"User-Agent"];
NSLog(@"User-Agent = %@", ua);