是否可以使用相同的密钥向NSMutableURLRequest添加多个标头?

时间:2017-11-13 06:53:30

标签: objective-c nsurlsession nsmutableurlrequest

是否可以使用相同的密钥向NSMutableURLRequest添加多个标头?

我只是请求标题中存在多个具有相同键的标题,我知道,NSMutableURLRequest的setHTTPHeaderField只会设置一些字段,但无法将重复项添加到标题中,无论如何都要实现这个?感谢。

1 个答案:

答案 0 :(得分:1)

没有-setHTTPHeaderField方法,您可能意味着-setValue:forHTTPHeaderField:。此方法始终替换现有值。但你可以做到。首先,您必须知道,在某些情况下才允许使用具有相同名称的多个标头字段:

  

具有相同字段名称的多个消息头字段可以是      当且仅当整个字段值出现在消息中时出现      标题字段被定义为以逗号分隔的列表[即,#(值)]。      必须可以将多个标题字段合并为一个      " field-name:field-value"对,不改变语义      消息,通过将每个后续字段值附加到第一个,每个      用逗号分隔。

RFC2616,4.2

因此,a: 1a: 2必须具有等效的a: 1, 2。这是什么 -addValue:forHTTPHeaderField:确实:

  

此方法提供了以递增方式向标头字段添加值的功能。如果先前为指定字段设置了值,则使用相应的字段分隔符将提供的值附加到现有值。对于HTTP,分隔符是逗号。

所以你可以这样做:

[request addValue:@1 forHTTPHeaderField:@"a"];
[request addValue:@2 forHTTPHeaderField:@"a"];