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

initWithURL:statusCode:HTTPVersion:headerFields:

创建一个新的自定义NSHTTPURLResponse

最佳答案

响应对象返回一个称为allHeaderFields的NSDictionary。如果您可以直接修改该词典,那将是理想的选择,但是它不是NSMutableDictionary。这意味着您只能执行以下两项操作之一:

  • 创建当前allHeaderFields字典的可变副本,并在新的NSHTTPURLResponse中使用它(我知道您说过您不想创建新的NSHTTPURLResponse,但这是最简单的解决方案,您可以从原始响应中获取其他值,制作一个用原始allHeaderFields的值初始化的NSMutableDictionary,编辑要欺骗的内容所需的字段,然后将其插入新的响应中。)
  • 否则,您可以实现NSHTTPURLResponse的自定义子类,该子类可以修改allHeaderFields对象。很好的答案,详细说明了如何执行here的基础知识,但是似乎有些round回。仅在需要覆盖大量HTTP Header字段时才使用此选项。
  • 10-07 19:49