【问题标题】:How to remove headers in a NSMutableURLRequest?如何删除 NSMutableURLRequest 中的标头?
【发布时间】:2011-12-13 06:01:04
【问题描述】:

如何发出不包含标头字段的请求?请求从头开始发送到我自己的服务器实现,它不关心标题字段。该请求最多只包含一个帖子正文。如果我遗漏了一些合乎逻辑的东西,请告诉我。

请不要告诉我有关 ASIHTTPRequest 的事情。谢谢。

【问题讨论】:

  • 你有没有找到答案?我正在尝试删除所有标题,但这里的响应今天似乎不起作用

标签: iphone objective-c ios nsurlrequest nsmutableurlrequest


【解决方案1】:

由于我想删除 NSMutableURLRequest 上的特定标头,我刚刚发现使用 nil 值调用 setValue:forHTTPHeaderField: 实际上会删除它。

Apple 没有记录,但似乎很合乎逻辑。

【讨论】:

  • 仅适用于通过 google 找到此页面的人——它不再工作了(我使用的是 10.8 sdk)。如果将其设置为 nil,则根本不会更改 User-Agent。
  • 它适用于带有自定义标头的 iOS 6.1 SDK(我没有测试 User-Agent)。
【解决方案2】:

对我来说是代码

[request addValue:@"" forHTTPHeaderField:@"User-Agent"];

只添加了一个空字符串而不是清理用户代理。 相反,使用 setValue 修复它:

[request setValue:@"" forHTTPHeaderField:@"User-Agent"];

【讨论】:

  • 请注意,这是正确答案。 addValue 会将新值附加到以前的值,逗号分隔。 setValue 将替换之前的值。
  • 回声,这仍然是 iOS 11.3 的正确答案
【解决方案3】:

我发现对于某些头部字段(“User-Agent”是其中之一),使用

将头部值设置为 nil
[request addValue:nil forHTTPHeaderField:@"User-Agent"];

实际上并没有删除标题字段,而是将其设置为默认值!

如果你想实际删除内容,将值设置为空字符串就足够了

[request addValue:@"" forHTTPHeaderField:@"User-Agent"];

【讨论】:

  • 我实际上发现使用 nil 会删除标题,至少在 MacOS 上是这样。
【解决方案4】:
  1. 如果您控制服务器实现,为什么不直接忽略它们?

  2. [request setAllHTTPHeaderFields:[NSDictionary dictionary]] 有效吗?

  3. 如果 #2 不起作用,请尝试创建自己的子类,该子类始终从 allHTTPHeaderFields 方法返回空字典,并从 valueForHTTPHeaderField: 方法返回 nil。但是NSURLConnection 可能会复制您的请求,因此您可能还必须覆盖copyWithZone:

【讨论】:

  • #1 保存的每个字节对于这个实现都很重要。
  • #2 不起作用,因为它不会覆盖内部字典。它只是覆盖键,如果有的话。我会看看子类化,如果有帮助,请告诉你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多