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

Bra*_*tte 12 iphone cocoa-touch nsurlconnection

我想将文本附加到默认的用户代理标头中NSURLConnection.我知道如何更改NSURLConnection的用户代理,但我不知道如何获取默认的用户代理.我尝试了以下方法:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
NSString *userAgent = [request valueForHTTPHeaderField:@"User-Agent"];
userAgent = [userAgent stringByAppendingString:extraUserAgentInfo];
[request addValue:userAgent forHTTPHeaderField:@"User-Agent"];
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为userAgent nil将从valueForHTTPHeaderField:呼叫中返回.

Hea*_*ers 5

部分默认User-Agent是您的AppName和版本:

我的用户代理是:

User-Agent  foo-bar/1.0 CFNetwork/609.1.4 Darwin/12.4.0
Run Code Online (Sandbox Code Playgroud)

foo-bar 是的价值 [[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *) kCFBundleNameKey]

1.0 是的价值 [[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *) kCFBundleVersionKey]


Bla*_*rog -3

有一篇博客文章更改来自 iCab 的 UIWebKit HTTP 请求的标头。他建议使用进程调用“Method Swizzling\xe2\x80\x9d来获得你想要的东西。但有传言称Method swizzling 会导致 4.0 拒绝

\n