NSUrlRequest:应用程序可以在哪里找到HTTP请求的默认标头?

有人知道iOS应用程序可以看到NSUrlRequest为HTTP请求设置的默认标头吗?

只需使用“http:// ..” NSURL创建NSUrlRequest ,然后询问: [request allHTTPHeaderFields]返回一个空字典。 但我知道例如“Accept-Encoding”设置为“gzip” 。 所以我希望得到所有这些字段并在HTTP请求演示中显示它们。

我也试图[NSMutableURLRequest setValue:forHTTPHeaderField:] ,但它似乎没有被底层API(NSURLRequest或NSURLConnection)用来设置我正在寻找的那些默认字段。

我正在制作一个简单的iOS演示,其中显示了HTTP请求和响应信息,因此如果它是用于此的公共或私有API并不重要。

你的应用不能。 它完成了CFNetwork – 与HTTP服务器通信 。 我相信它只是添加了NSURLRequest未提供的缺失标头值。

默认值为:

  • USER-AGENT “AppName – Eng / 1.0 CFNetwork / 485.13.9 Darwin / 10.7.0”
  • 接受 “* / *”
  • ACCEPT-LANGUAGE “en-us”
  • 接受编码 “gzip,deflate”
  • 连接 “保持活力”

嗯…也许你可能想尝试一下

 - (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse 

自定义nsurlconnection类中的方法。 虽然文档提到了有关重定向的内容,但这当然值得研究。

这可能是一种矫枉过正,但根据Matt Gallagher的博客文章,我创建了更简单的本地HTTP侦听器,并向其发送了一个单独的[mutableCopy] ed请求,以便能够读取和输出此请求具有的所有HTTP头。

更好的解决方案必须是设置一个本地HTTP请求捕获器,它看起来必须看起来更好,但是对于简单演示的范围只是为了显示所有发送/接收的头,这个解决方案是可以的。