Как получить UIWebView User-Agent

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

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

2 ответа

Решение

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

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

Как упоминалось выше, @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);
Другие вопросы по тегам