public function setHeaders($name, $value = null)
{
// If we got an array, go recursive!
if (is_array($name)) {
foreach ($name as $k => $v) {
if (is_string($k)) {
$this->setHeaders($k, $v);
} else {
$this->setHeaders($v, null);
}
}
} else {
// Check if $name needs to be split
if ($value === null && strpos($name, ':') > 0) {
list($name, $value) = explode(':', $name, 2);
}
// Make sure the name is valid if we are in strict mode
if ($this->config['strict'] && !preg_match('/^[a-zA-Z0-9-]+$/', $name)) {
/** @see Zend_Http_Client_Exception */
require_once 'Zend/Http/Client/Exception.php';
throw new Zend_Http_Client_Exception("{$name} is not a valid HTTP header name");
}
$normalized_name = strtolower($name);
// If $value is null or false, unset the header
if ($value === null || $value === false) {
unset($this->headers[$normalized_name]);
// Else, set the header
} else {
// Header names are stored lowercase internally.
if (is_string($value)) {
$value = trim($value);
}
$this->headers[$normalized_name] = array($name, $value);
}
}
return $this;
}