如何在NSURLConnection中获取默认的用户代理字符串?

时间:2011-04-15 15:52:05

标签: iphone cocoa-touch nsurlconnection

我想将文字附加到NSURLConnection中的默认用户代理标头。我知道如何change the user-agent of the NSURLConnection,但我不知道如何获得默认的用户代理。我尝试了以下方法:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
NSString *userAgent = [request valueForHTTPHeaderField:@"User-Agent"];
userAgent = [userAgent stringByAppendingString:extraUserAgentInfo];
[request addValue:userAgent forHTTPHeaderField:@"User-Agent"];

这不起作用,因为userAgent会从nil电话回来valueForHTTPHeaderField:

2 个答案:

答案 0 :(得分:5)

默认用户代理的一部分是您的AppName和版本:

我的用户代理是:

User-Agent  foo-bar/1.0 CFNetwork/609.1.4 Darwin/12.4.0

foo-bar[[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *) kCFBundleNameKey]

的值

1.0[[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *) kCFBundleVersionKey]

的值

答案 1 :(得分:-3)

来自iCab的博客条目Changing the headers for UIWebKit HTTP requests。他建议使用流程调用"Method Swizzling”来获得您想要的内容。但有传言称Method swizzling cause for 4.0 rejection