我知道可能有几个问题,但是当我尝试为我的 UIWebView 设置新的“用户代理”时,我遇到了问题。这就是我现在正在做的事情:
NSURL *myUrl = [NSURL URLWithString:auxUrl];
NSMutableURLRequest *myRequest = [NSMutableURLRequest requestWithURL:myUrl];
NSMutableString *auxUserAgent = [[NSMutableString alloc] initWithString:[myRequest valueForHTTPHeaderField: @"User-Agent"]];
[auxUserAgent appendString:@"(iOS)"];
[myRequest setValue:auxUserAgent forHTTPHeaderField:@"User-Agent"];
NSLog(@"UA : %@",[myRequest valueForHTTPHeaderField: @"User-Agent"]);
我正在尝试将一些文本附加到实际的用户代理,并且在XCode控制台中它确实显示了新的用户代理值。
2013-12-16 19:03:42.200 App [736:60b] UA:Mozilla / 5.0(iPhone; CPU iPhone OS 7_0_4,如Mac OS X)AppleWebKit / 537.51.1(KHTML,如Gecko)Mobile / 11B554a (IOS)
但是当我运行我的应用程序时,它会显示旧的应用程序。以下是我在UIWebView中显示的网页中显示的用户代理的屏幕截图:
所以..我的问题是:我错过了什么?系统中有什么东西不允许开发人员更改这些数据?
谢谢。
答案 0 :(得分:6)
我通过输入 AppDelegate.m 的 didFinishLaunchingWithOptions 以下代码“解决”了我的问题:
NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"YOUR CUSTOM USER-AGENT", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
问题是我无法将文本附加到用户代理本身,但我可以编写我需要的数据来区分不同应用程序或Web浏览器对网页的访问。
谢谢大家的帮助。
答案 1 :(得分:2)
它不会像那样工作。 UIWebView会覆盖User-Agent
字段。
如果您尝试在User-Agent
方法中记录webView:shouldStartLoadWithRequest:navigationType:
,则会看到它已被覆盖,但您可以使用NSURLConnection
使用自定义{{User-Agent
加载您的请求1}}然后使用loadHTMLString:baseURL:
方法或来自loadData:MIMEType:textEncodingName:baseURL:
的{{1}}方法显示UIWebView
中下载的数据。