3

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

initWithURL:statusCode:HTTPVersion:headerFields:

创建一个新的自定义 NSHTTPURLResponse

4

1 回答 1

4

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

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

  • 否则,您可以实现 NSHTTPURLResponse 的自定义子类,该子类可以修改 allHeaderFields 对象。很好的答案,详细说明了如何在此处执行此操作的基础知识,但似乎更加迂回。仅当您需要覆盖大量 HTTP 标头字段时才使用它。

于 2012-07-13T04:39:06.097 回答