Просмотр исходного кода

fix ZF-5708 - allow cleaning headers in http client

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19228 44c647ce-9c0f-0410-b52a-842ac1e357ba
stas 16 лет назад
Родитель
Сommit
3ade4698eb
2 измененных файлов с 25 добавлено и 8 удалено
  1. 17 7
      library/Zend/Http/Client.php
  2. 8 1
      tests/Zend/Http/Client/CommonHttpTests.php

+ 17 - 7
library/Zend/Http/Client.php

@@ -765,10 +765,14 @@ class Zend_Http_Client
      *
      * Should be used to reset the request parameters if the client is
      * used for several concurrent requests.
+     * 
+     * clearAll parameter controls if we clean just parameters or also
+     * headers and last_*
      *
+     * @param bool $clearAll Should all data be cleared?
      * @return Zend_Http_Client
      */
-    public function resetParameters()
+    public function resetParameters($clearAll = false)
     {
         // Reset parameter data
         $this->paramsGet     = array();
@@ -776,12 +780,18 @@ class Zend_Http_Client
         $this->files         = array();
         $this->raw_post_data = null;
 
-        // Clear outdated headers
-        if (isset($this->headers[strtolower(self::CONTENT_TYPE)])) {
-            unset($this->headers[strtolower(self::CONTENT_TYPE)]);
-        }
-        if (isset($this->headers[strtolower(self::CONTENT_LENGTH)])) {
-            unset($this->headers[strtolower(self::CONTENT_LENGTH)]);
+        if($clearAll) {
+            $this->headers = array();
+            $this->last_request = null;
+            $this->last_response = null;
+        } else {
+	        // Clear outdated headers
+	        if (isset($this->headers[strtolower(self::CONTENT_TYPE)])) {
+	            unset($this->headers[strtolower(self::CONTENT_TYPE)]);
+	        }
+	        if (isset($this->headers[strtolower(self::CONTENT_LENGTH)])) {
+	            unset($this->headers[strtolower(self::CONTENT_LENGTH)]);
+	        }
         }
 
         return $this;

+ 8 - 1
tests/Zend/Http/Client/CommonHttpTests.php

@@ -237,9 +237,12 @@ abstract class Zend_Http_Client_CommonHttpTests extends PHPUnit_Framework_TestCa
             'specialChars' => '<>$+ &?=[]^%',
             'array' => array('firstItem', 'secondItem', '3rdItem')
         );
-
+        
+        $headers = array("X-Foo" => "bar");
+        
         $this->client->setParameterPost($params);
         $this->client->setParameterGet($params);
+        $this->client->setHeaders($headers);
 
         $res = $this->client->request('POST');
 
@@ -251,6 +254,10 @@ abstract class Zend_Http_Client_CommonHttpTests extends PHPUnit_Framework_TestCa
 
         $this->assertNotContains(serialize($params), $res->getBody(),
             "returned body contains GET or POST parameters (it shouldn't!)");
+        $this->assertContains($headers["X-Foo"], $this->client->getHeader("X-Foo"), "Header not preserved by reset");
+
+        $this->client->resetParameters(true);
+        $this->assertNull($this->client->getHeader("X-Foo"), "Header preserved by reset(true)");
     }
 
     /**