有人知道iOS应用可以看到NSUrlRequest
为HTTP请求设置的默认标头吗?
只需使用“http:// ..” NSUrlRequest
创建NSURL
,然后询问:[request allHTTPHeaderFields]
将返回一个空字典。但I know例如“Accept-Encoding”设置为“gzip”。所以我希望得到所有这些字段并在HTTP请求演示中显示它们。
我也试过swizzle [NSMutableURLRequest setValue:forHTTPHeaderField:]
,但它似乎没有被底层API(NSURLRequest或NSURLConnection)用来设置我正在寻找的那些默认字段。
我正在制作一个简单的iOS演示,其中显示了HTTP请求和响应信息,因此如果它是用于此的公共或私有API并不重要。
答案 0 :(得分:14)
你的应用不能。它完成了CFNetwork - Communicating with HTTP Servers。我相信它只会添加NSURLRequest未提供的缺少标头值。
默认值为:
答案 1 :(得分:5)
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
自定义nsurlconnection类中的方法。虽然文档提到了有关重定向的内容,但这当然值得研究。
答案 2 :(得分:2)
这可能是一种矫枉过正,但基于Matt Gallagher's blog post我创建了更简单的本地HTTP侦听器,并向它发送了一个单独的[mutableCopy] ed请求,以便能够读取和输出所有这些HTTP头请求已经。
更好的解决方案必须是设置本地HTTP请求捕获器,我认为它必须看起来更好,但是对于简单演示的范围只是为了显示所有发送/接收的头,这个解决方案是可以的。