用户代理不在NSMutableURLRequest中更改

时间:2013-12-16 18:19:31

标签: ios objective-c uiwebview user-agent nsmutableurlrequest

我知道可能有几个问题,但是当我尝试为我的 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中显示的网页中显示的用户代理的屏幕截图: ScreenShot

所以..我的问题是:我错过了什么?系统中有什么东西不允许开发人员更改这些数据?

谢谢。

2 个答案:

答案 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中下载的数据。