Does anybody know where an iOS app can see the default headers that NSUrlRequest sets for an HTTP request?

Just creating NSUrlRequest with "http://.."NSURL and then asking: [request allHTTPHeaderFields] returns an empty dictionary. But I know that for example "Accept-Encoding" is set to "gzip". So I want to get all that fields and show them in a HTTP request demo.

I've also tried to swizzle[NSMutableURLRequest setValue:forHTTPHeaderField:], but it seems that it is not used by underlying API (NSURLRequest or NSURLConnection) to set those default fields I'm hunting for.

I'm making just a simple iOS demo which shows HTTP request and response information, so it doesn't really matters if it will be a public or private API used for that.

Indeed -(NSURLRequest *)connection:willSendRequest: redirectResponse: will be called for a simple request when no redirection is needed (despite official docs) and its header will have some fields at this stage: { Accept = "*/*"; Accept-Encoding" = "gzip, deflate"; Accept-Language" = "en-us";} but there more: "Host", "User-Agent" and "Connection" which are set at some lower level - I've run a simple local HTTP server to see all of them.
– zubkoApr 20 '11 at 20:40

That may be an overkill, but based on Matt Gallagher's blog post I've created even more simpler local HTTP listener and sent a separate [mutableCopy]ed request to it to be able to read and output all HTTP headers that this request has.

Better solution must be to setup a local HTTP request catcher, it must look nicer I think, but for the scope of simple demo just to show all sent/received headers this solution is OK.