Как получить UIWebView User-Agent - PullRequest
26 голосов
/ 21 июля 2010

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

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

Ответы [ 2 ]

66 голосов
/ 31 января 2011

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

<code>UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
6 голосов
/ 04 октября 2013

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

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

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

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

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