我需要在HttpUrlConnection
中添加一些标题,以便使用Slim框架(版本3)将它们发送到用PHP编写的Web服务器。
当我在连接中添加更多带有相同密钥的标头时,我遇到了麻烦。 例如:
HttpUrlConnection conn = createConnectionSomeHow();
conn.addRequestProperty("myHeader", "value1");
conn.addRequestProperty("myHeader", "value2");
如果我在conn.getRequestProperties()
上使用观看,我会看到一个包含密钥"myHeader"
的标头和一个包含2个元素的列表作为值。就像我想要的那样。
但我的网络服务器收不到这个标题。
如果我写:
$values = $request->getHeader('myHeader');
$values
不是2个元素的列表,它是包含值"value1, value2"
的1个元素的列表,也就是说,在单个字符串中连接的2个值。
这真的很奇怪。我读了Slim documentation:
您可以使用PSR 7 Request对象获取单个标头的值 getHeader($ name)方法。这将返回给定的值数组 标题名称。请记住,单个HTTP标头可能有多个 值!
有一种方法可以自动连接标题的值,它被称为getHeaderLine
。我不是在说它。我打电话给getHeader
。
这种行为是否正确?我错了吗?
答案 0 :(得分:1)
好抓。这实际上是一个错误。
我为此创建了issue at the Slim Github project。
作为解决方法,您可以自行拆分标题:
$values = explode(',', $request->getHeaderLine('myHeader'));