I would like to append text to the default user-agent header in an NSURLConnection
. I know how to change the user-agent of the NSURLConnection, but I don't see how to get the default user-agent. I tried the following:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
NSString *userAgent = [request valueForHTTPHeaderField:@"User-Agent"];
userAgent = [userAgent stringByAppendingString:extraUserAgentInfo];
[request addValue:userAgent forHTTPHeaderField:@"User-Agent"];
This does not work because userAgent is coming back nil
from the valueForHTTPHeaderField:
call.
Part of the default User-Agent is your AppName and Version:
My user agent is:
foo-bar
is the value of[[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *) kCFBundleNameKey]
and
1.0
is the value of[[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *) kCFBundleVersionKey]
There's a blog entry Changing the headers for UIWebKit HTTP requests from iCab. He suggest using a process call "Method Swizzling” to get what you want. But there is a rumor that Method swizzling cause for 4.0 rejection