如何获取UIWebView用户代理

时间:2010-07-21 09:12:48

标签: iphone ios4 uiwebview user-agent

使用一台远程服务器时遇到问题。我的应用使用[NSData initWithContentsOfURL:]方法向服务器发出请求,作为回复,我获取了我在UIWebView打开的网站网址。

问题是这些请求具有不同的User-Agent,并且服务器无法正确地为我服务,因为它期望我使用相同的User-Agent发送所有请求。我知道如何更改用户代理(例如Change User Agent in UIWebView (iPhone SDK)),但我真正想要的是以某种方式获取UIWebView的用户代理并将其设置为[NSData initWithContentsOfURL:]以避免服务器出现问题

2 个答案:

答案 0 :(得分:66)

我遇到了类似的问题,需要让NSURLConnection发送的用户代理与UIWebView发送的用户代理匹配。我的解决方案是创建一个UIWebView,然后使用javascript来提取用户代理。

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

答案 1 :(得分:6)

正如@nate提到的above,你可以在webview中调用Javascript:

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

但调用新的Javascript有点hacky并且创建一个零大小的webView是无偿的,因为你已经有了一个你正在处理的webView。

或者,您可以在给定的webView上使用原生方法:

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