ios - 修改 NSHTTPURLResponse 中的 header

标签 ios nsurlconnection nsurlrequest nsurlprotocol nshttpurlresponse

是否可以在不使用该方法的情况下修改 NSHTTPURLResponse 上的 header

initWithURL:statusCode:HTTPVersion:headerFields:

创建一个新的自定义 NSHTTPURLResponse

最佳答案

响应对象返回一个名为 allHeaderFields 的 NSDictionary。如果您可以直接修改该字典,那将是理想的,但它不是 NSMutableDictionary。这意味着您只能做以下两件事之一:

  • 创建当前 allHeaderFields 字典的可变副本,并在新的 NSHTTPURLResponse 中使用它(我知道你说过你不想创建新的 NSHTTPURLResponse,但这是最简单的解决方案,您从原始响应中获取其他值,制作一个使用原始 allHeaderFields 值初始化的 NSMutableDictionary,编辑您需要的字段以进行欺骗,然后插入进入新的响应。)

  • 否则,您可以实现 NSHTTPURLResponse 的自定义子类,它可以修改 allHeaderFields 对象。很好的答案,详细介绍了如何做到这一点的基础知识 here ,但是它似乎有点迂回。仅当您需要覆盖大量 HTTP header 字段时才使用它。

关于ios - 修改 NSHTTPURLResponse 中的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463840/

相关文章:

ios - 解析指向对象 EXC_BAD_ACCESS 的指针

ios - 基于 TCP 的客户端通信在 iOS 11 中不起作用?

ios - 将pem证书添加到项目中

ios - 当我给UIImageView动画时,为什么UIImage引用会更改?

ios - 为什么 UITableView 为空?

objective-c - UIDocumentInteractionController,没有文件扩展名,只有 UTI

ios - 409 是 Alamofire 的成功吗?

objective-c - ASIHTTPRequest 和 NSURLRequest 不同的结果

iphone - 如何创建一个同步的NSURLConnection请求

iphone - viewDidLoad 中的 NSURLRequest 使用缓存数据?