mirror of
https://github.com/php-curl-class/php-curl-class.git
synced 2026-09-04 23:06:53 +00:00
Fix #651: Allow passing an indexed array to Curl::setHeaders()
This commit is contained in:
+14
-2
@@ -965,14 +965,26 @@ class Curl
|
||||
*/
|
||||
public function setHeaders($headers)
|
||||
{
|
||||
foreach ($headers as $key => $value) {
|
||||
$this->headers[$key] = $value;
|
||||
if (ArrayUtil::isArrayAssoc($headers)) {
|
||||
foreach ($headers as $key => $value) {
|
||||
$key = trim($key);
|
||||
$value = trim($value);
|
||||
$this->headers[$key] = $value;
|
||||
}
|
||||
} else {
|
||||
foreach ($headers as $header) {
|
||||
list($key, $value) = explode(':', $header, 2);
|
||||
$key = trim($key);
|
||||
$value = trim($value);
|
||||
$this->headers[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$headers = array();
|
||||
foreach ($this->headers as $key => $value) {
|
||||
$headers[] = $key . ': ' . $value;
|
||||
}
|
||||
|
||||
$this->setOpt(CURLOPT_HTTPHEADER, $headers);
|
||||
}
|
||||
|
||||
|
||||
@@ -3910,4 +3910,132 @@ class CurlTest extends \PHPUnit\Framework\TestCase
|
||||
$curl->disableTimeout();
|
||||
$this->assertNull($curl->getOpt(CURLOPT_TIMEOUT));
|
||||
}
|
||||
|
||||
public function testSetHeadersAssociativeArray()
|
||||
{
|
||||
$curl = new Curl();
|
||||
$curl->setHeaders(array(
|
||||
' Key1 ' => ' Value1 ',
|
||||
' Key2 ' => ' Value2',
|
||||
' Key3 ' => 'Value3 ',
|
||||
' Key4 ' => 'Value4',
|
||||
' Key5' => ' Value5 ',
|
||||
' Key6' => ' Value6',
|
||||
' Key7' => 'Value7 ',
|
||||
' Key8' => 'Value8',
|
||||
'Key9 ' => ' Value9 ',
|
||||
'Key10 ' => ' Value10',
|
||||
'Key11 ' => 'Value11 ',
|
||||
'Key12 ' => 'Value12',
|
||||
'Key13' => ' Value13 ',
|
||||
'Key14' => ' Value14',
|
||||
'Key15' => 'Value15 ',
|
||||
'Key16' => 'Value16',
|
||||
));
|
||||
|
||||
$this->assertEquals(array(
|
||||
'Key1: Value1',
|
||||
'Key2: Value2',
|
||||
'Key3: Value3',
|
||||
'Key4: Value4',
|
||||
'Key5: Value5',
|
||||
'Key6: Value6',
|
||||
'Key7: Value7',
|
||||
'Key8: Value8',
|
||||
'Key9: Value9',
|
||||
'Key10: Value10',
|
||||
'Key11: Value11',
|
||||
'Key12: Value12',
|
||||
'Key13: Value13',
|
||||
'Key14: Value14',
|
||||
'Key15: Value15',
|
||||
'Key16: Value16',
|
||||
), $curl->getOpt(CURLOPT_HTTPHEADER));
|
||||
|
||||
$reflector = new \ReflectionClass('\Curl\Curl');
|
||||
$property = $reflector->getProperty('headers');
|
||||
$property->setAccessible(true);
|
||||
$headers = $property->getValue($curl);
|
||||
|
||||
$this->assertEquals('Value1', $headers['Key1']);
|
||||
$this->assertEquals('Value2', $headers['Key2']);
|
||||
$this->assertEquals('Value3', $headers['Key3']);
|
||||
$this->assertEquals('Value4', $headers['Key4']);
|
||||
$this->assertEquals('Value5', $headers['Key5']);
|
||||
$this->assertEquals('Value6', $headers['Key6']);
|
||||
$this->assertEquals('Value7', $headers['Key7']);
|
||||
$this->assertEquals('Value8', $headers['Key8']);
|
||||
$this->assertEquals('Value9', $headers['Key9']);
|
||||
$this->assertEquals('Value10', $headers['Key10']);
|
||||
$this->assertEquals('Value11', $headers['Key11']);
|
||||
$this->assertEquals('Value12', $headers['Key12']);
|
||||
$this->assertEquals('Value13', $headers['Key13']);
|
||||
$this->assertEquals('Value14', $headers['Key14']);
|
||||
$this->assertEquals('Value15', $headers['Key15']);
|
||||
$this->assertEquals('Value16', $headers['Key16']);
|
||||
}
|
||||
|
||||
public function testSetHeadersIndexedArray()
|
||||
{
|
||||
$curl = new Curl();
|
||||
$curl->setHeaders(array(
|
||||
' Key1 : Value1 ',
|
||||
' Key2 : Value2',
|
||||
' Key3 :Value3 ',
|
||||
' Key4 :Value4',
|
||||
' Key5: Value5 ',
|
||||
' Key6: Value6',
|
||||
' Key7:Value7 ',
|
||||
' Key8:Value8',
|
||||
'Key9 : Value9 ',
|
||||
'Key10 : Value10',
|
||||
'Key11 :Value11 ',
|
||||
'Key12 :Value12',
|
||||
'Key13: Value13 ',
|
||||
'Key14: Value14',
|
||||
'Key15:Value15 ',
|
||||
'Key16:Value16',
|
||||
));
|
||||
|
||||
$this->assertEquals(array(
|
||||
'Key1: Value1',
|
||||
'Key2: Value2',
|
||||
'Key3: Value3',
|
||||
'Key4: Value4',
|
||||
'Key5: Value5',
|
||||
'Key6: Value6',
|
||||
'Key7: Value7',
|
||||
'Key8: Value8',
|
||||
'Key9: Value9',
|
||||
'Key10: Value10',
|
||||
'Key11: Value11',
|
||||
'Key12: Value12',
|
||||
'Key13: Value13',
|
||||
'Key14: Value14',
|
||||
'Key15: Value15',
|
||||
'Key16: Value16',
|
||||
), $curl->getOpt(CURLOPT_HTTPHEADER));
|
||||
|
||||
$reflector = new \ReflectionClass('\Curl\Curl');
|
||||
$property = $reflector->getProperty('headers');
|
||||
$property->setAccessible(true);
|
||||
$headers = $property->getValue($curl);
|
||||
|
||||
$this->assertEquals('Value1', $headers['Key1']);
|
||||
$this->assertEquals('Value2', $headers['Key2']);
|
||||
$this->assertEquals('Value3', $headers['Key3']);
|
||||
$this->assertEquals('Value4', $headers['Key4']);
|
||||
$this->assertEquals('Value5', $headers['Key5']);
|
||||
$this->assertEquals('Value6', $headers['Key6']);
|
||||
$this->assertEquals('Value7', $headers['Key7']);
|
||||
$this->assertEquals('Value8', $headers['Key8']);
|
||||
$this->assertEquals('Value9', $headers['Key9']);
|
||||
$this->assertEquals('Value10', $headers['Key10']);
|
||||
$this->assertEquals('Value11', $headers['Key11']);
|
||||
$this->assertEquals('Value12', $headers['Key12']);
|
||||
$this->assertEquals('Value13', $headers['Key13']);
|
||||
$this->assertEquals('Value14', $headers['Key14']);
|
||||
$this->assertEquals('Value15', $headers['Key15']);
|
||||
$this->assertEquals('Value16', $headers['Key16']);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user