Как получить пользовательский агент 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);