Ios 修改NSHTTPURLResponse中的标题
是否可以在不使用此方法的情况下修改NSHTTPPURLResponse上的标头Ios 修改NSHTTPURLResponse中的标题,ios,nsurlconnection,nsurlrequest,nsurlprotocol,nshttpurlresponse,Ios,Nsurlconnection,Nsurlrequest,Nsurlprotocol,Nshttpurlresponse,是否可以在不使用此方法的情况下修改NSHTTPPURLResponse上的标头 initWithURL:statusCode:HTTPVersion:headerFields: 要创建新的自定义NSHTTPURLResponse响应对象将返回一个名为allHeaderFields的NSDictionary。如果您可以直接修改该词典,那将是一个理想的选择,但它不是NSMutableDictionary。这意味着你只能做两件事中的一件: 创建当前allHeaderFields词典的可变副本,并在
initWithURL:statusCode:HTTPVersion:headerFields:
要创建新的自定义NSHTTPURLResponse响应对象将返回一个名为
allHeaderFields
的NSDictionary。如果您可以直接修改该词典,那将是一个理想的选择,但它不是NSMutableDictionary。这意味着你只能做两件事中的一件:
- 创建当前
词典的可变副本,并在新的NSHTTPPURLResponse中使用该副本(我知道您说过不想创建新的NSHTTPURLResponse,但这是最简单的解决方案,您可以从原始响应中获取其他值,制作一个NSMutableDictionary,用原始allHeaderFields
的值初始化,编辑字段)您需要为您正在欺骗的任何内容提供支持,并将其插入到新的响应中。)allHeaderFields
- 否则,您可以实现NSHTTPPURLRESPONSE的自定义子类,该子类可以修改allHeaderFields对象。这是一个很好的答案,详细介绍了如何执行此操作的基本知识,但它似乎有点迂回。只有在您需要覆盖大量HTTP头字段时才会使用此选项