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

zub*_*bko 5 macos cocoa core-foundation ios

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

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

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

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

Bla*_*rog 14

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

默认值为:

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


小智 5

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

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
Run Code Online (Sandbox Code Playgroud)

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


zub*_*bko 2

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

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