Ver Fonte

Replaced static instance of Zend_Http_Client with a local instance. This is initially cloned when the object is instantiated but can be replaced using setLocalHttpClient() - fixes ZF-6284

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18243 44c647ce-9c0f-0410-b52a-842ac1e357ba
padraic há 16 anos atrás
pai
commit
5f7eb1c733
2 ficheiros alterados com 174 adições e 56 exclusões
  1. 137 31
      library/Zend/Service/Twitter.php
  2. 37 25
      tests/Zend/Service/TwitterTest.php

+ 137 - 31
library/Zend/Service/Twitter.php

@@ -69,7 +69,13 @@ class Zend_Service_Twitter extends Zend_Rest_Client
      * Types of API methods
      * @var array
      */
-    protected $_methodTypes = array('status' , 'user' , 'directMessage' , 'friendship' , 'account' , 'favorite');
+    protected $_methodTypes = array('status' , 'user' , 'directMessage' , 'friendship' , 'account' , 'favorite');
+
+    /**
+     * Local HTTP Client cloned from statically set client
+     * @var Zend_Http_Client
+     */
+    protected $_localHttpClient = null;
     /**
      * Constructor
      *
@@ -78,7 +84,8 @@ class Zend_Service_Twitter extends Zend_Rest_Client
      * @return void
      */
     public function __construct ($username, $password = null)
-    {
+    {
+        $this->setLocalHttpClient(clone self::getHttpClient());
         if (is_array($username) && is_null($password)) {
             if (isset($username['username']) && isset($username['password'])) {
                 $this->setUsername($username['username']);
@@ -92,8 +99,25 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             $this->setPassword($password);
         }
         $this->setUri('http://twitter.com');
-        $client = self::getHttpClient();
-        $client->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
+        $this->_localHttpClient->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
+    }
+
+    /**
+     * Set local HTTP client as distinct from the static HTTP client
+     * as inherited from Zend_Rest_Client.
+     *
+     * @param Zend_Http_Client $client
+     * @return self
+     */
+    public function setLocalHttpClient(Zend_Http_Client $client)
+    {
+        $this->_localHttpClient = $client;
+        return $this;
+    }
+
+    public function getLocalHttpClient()
+    {
+        return $this->_localHttpClient;
     }
     /**
      * Retrieve username
@@ -181,7 +205,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
      */
     protected function _init ()
     {
-        $client = self::getHttpClient();
+        $client = $this->_localHttpClient;
         $client->resetParameters();
         if (null == $this->_cookieJar) {
             $client->setCookieJar();
@@ -208,7 +232,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
         } else {
             $date = date($this->_dateFormat, strtotime($value));
         }
-        self::getHttpClient()->setHeaders('If-Modified-Since', $date);
+        $this->_localHttpClient->setHeaders('If-Modified-Since', $date);
     }
     /**
      * Public Timeline status
@@ -220,7 +244,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/statuses/public_timeline.xml';
-        $response = $this->restGet($path);
+        $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -263,7 +287,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             }
         }
         $path .= '.xml';
-        $response = $this->restGet($path, $_params);
+        $response = $this->_get($path, $_params);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -320,7 +344,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             }
         }
         $path .= '.xml';
-        $response = $this->restGet($path, $_params);
+        $response = $this->_get($path, $_params);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -334,7 +358,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/statuses/show/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restGet($path);
+        $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -363,7 +387,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             $data['in_reply_to_status_id'] = $in_reply_to_status_id;
         }
         //$this->status = $status;
-        $response = $this->restPost($path, $data);
+        $response = $this->_post($path, $data);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -393,7 +417,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
                     break;
             }
         }
-        $response = $this->restGet($path, $_params);
+        $response = $this->_get($path, $_params);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -407,7 +431,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/statuses/destroy/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restPost($path);
+        $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -435,7 +459,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             }
         }
         $path .= '.xml';
-        $response = $this->restGet($path, $_params);
+        $response = $this->_get($path, $_params);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -452,7 +476,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
         if ($lite) {
             $this->lite = 'true';
         }
-        $response = $this->restGet($path);
+        $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -465,7 +489,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/statuses/featured.xml';
-        $response = $this->restGet($path);
+        $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -479,7 +503,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/users/show/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restGet($path);
+        $response = $this->_get($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -510,7 +534,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
                     break;
             }
         }
-        $response = $this->restGet($path, $_params);
+        $response = $this->_get($path, $_params);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -541,7 +565,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
                     break;
             }
         }
-        $response = $this->restGet($path, $_params);
+        $response = $this->_get($path, $_params);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -564,7 +588,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             throw new Zend_Service_Twitter_Exception('Direct message must contain no more than 140 characters');
         }
         $data = array('user' => $user , 'text' => $text);
-        $response = $this->restPost($path, $data);
+        $response = $this->_post($path, $data);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -578,7 +602,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/direct_messages/destroy/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restPost($path);
+        $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -592,7 +616,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/friendships/create/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restPost($path);
+        $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -606,7 +630,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/friendships/destroy/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restPost($path);
+        $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -621,7 +645,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
         $this->_init();
         $path = '/friendships/exists.xml';
         $data = array('user_a' => $this->getUsername() , 'user_b' => $this->_validInteger($id));
-        $response = $this->restGet($path, $data);
+        $response = $this->_get($path, $data);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -633,7 +657,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function accountVerifyCredentials ()
     {
         $this->_init();
-        $response = $this->restGet('/account/verify_credentials.xml');
+        $response = $this->_get('/account/verify_credentials.xml');
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -645,7 +669,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function accountEndSession ()
     {
         $this->_init();
-        $this->restGet('/account/end_session');
+        $this->_get('/account/end_session');
         return true;
     }
     /**
@@ -657,7 +681,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     public function accountRateLimitStatus ()
     {
         $this->_init();
-        $response = $this->restGet('/account/rate_limit_status.xml');
+        $response = $this->_get('/account/rate_limit_status.xml');
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -689,7 +713,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             }
         }
         $path .= '.xml';
-        $response = $this->restGet($path, $_params);
+        $response = $this->_get($path, $_params);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -703,7 +727,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/favorites/create/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restPost($path);
+        $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -717,7 +741,7 @@ class Zend_Service_Twitter extends Zend_Rest_Client
     {
         $this->_init();
         $path = '/favorites/destroy/' . $this->_validInteger($id) . '.xml';
-        $response = $this->restPost($path);
+        $response = $this->_post($path);
         return new Zend_Rest_Client_Result($response->getBody());
     }
     /**
@@ -750,5 +774,87 @@ class Zend_Service_Twitter extends Zend_Rest_Client
             . ' underscores, and not exceed 15 characters.');
         }
         return $name;
-    }
+    }
+
+    /**
+     * Call a remote REST web service URI and return the Zend_Http_Response object
+     *
+     * @param  string $path            The path to append to the URI
+     * @throws Zend_Rest_Client_Exception
+     * @return void
+     */
+    protected function _prepare($path)
+    {
+        // Get the URI object and configure it
+        if (!$this->_uri instanceof Zend_Uri_Http) {
+            require_once 'Zend/Rest/Client/Exception.php';
+            throw new Zend_Rest_Client_Exception('URI object must be set before performing call');
+        }
+
+        $uri = $this->_uri->getUri();
+
+        if ($path[0] != '/' && $uri[strlen($uri)-1] != '/') {
+            $path = '/' . $path;
+        }
+
+        $this->_uri->setPath($path);
+
+        /**
+         * Get the HTTP client and configure it for the endpoint URI.  Do this each time
+         * because the Zend_Http_Client instance is shared among all Zend_Service_Abstract subclasses.
+         */
+        $this->_localHttpClient->resetParameters()->setUri($this->_uri);
+    }
+
+    /**
+     * Performs an HTTP GET request to the $path.
+     *
+     * @param string $path
+     * @param array  $query Array of GET parameters
+     * @throws Zend_Http_Client_Exception
+     * @return Zend_Http_Response
+     */
+    protected function _get($path, array $query = null)
+    {
+        $this->_prepare($path);
+        $this->_localHttpClient->setParameterGet($query);
+        return $this->_localHttpClient->request('GET');
+    }
+
+    /**
+     * Performs an HTTP POST request to $path.
+     *
+     * @param string $path
+     * @param mixed $data Raw data to send
+     * @throws Zend_Http_Client_Exception
+     * @return Zend_Http_Response
+     */
+    protected function _post($path, $data = null)
+    {
+        $this->_prepare($path);
+        return $this->_performPost('POST', $data);
+    }
+
+    /**
+     * Perform a POST or PUT
+     *
+     * Performs a POST or PUT request. Any data provided is set in the HTTP
+     * client. String data is pushed in as raw POST data; array or object data
+     * is pushed in as POST parameters.
+     *
+     * @param mixed $method
+     * @param mixed $data
+     * @return Zend_Http_Response
+     */
+    protected function _performPost($method, $data = null)
+    {
+        $client = $this->_localHttpClient;
+        if (is_string($data)) {
+            $client->setRawData($data);
+        } elseif (is_array($data) || is_object($data)) {
+            $client->setParameterPost((array) $data);
+        }
+        return $client->request($method);
+    }
+
 }

+ 37 - 25
tests/Zend/Service/TwitterTest.php

@@ -131,10 +131,12 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
                 'max_id' => '123',
                 'screen_name'=>'abcdef'
             ));
-        } catch (Zend_Rest_Client_Result_Exception $e) {}
+        } catch (Zend_Rest_Client_Result_Exception $e) {
+            // ignores empty response complaint from Zend_Rest
+        }
         $this->assertContains(
             'GET /statuses/user_timeline/123.xml?page=1&count=123&user_id=123&since_id=123&max_id=123&screen_name=abcdef',
-            $client->getLastRequest()
+            $twitter->getLocalHttpClient()->getLastRequest()
         );
     }
 
@@ -245,7 +247,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
     {
         $response = $this->twitter->account->verifyCredentials();
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -258,7 +260,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
     {
         $response = $this->twitter->status->publicTimeline();
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -273,7 +275,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response = $this->twitter->user->featured();
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -286,7 +288,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response = $this->twitter->account->rateLimitStatus();
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -319,7 +321,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
     public function testFriendshipCreate()
     {
         $response = $this->twitter->friendship->create('zftestuser1');
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
     }
@@ -333,7 +335,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response = $this->twitter->friendship->exists('zftestuser1');
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
 
-        $httpClient     = Zend_Service_Twitter::getHttpClient();
+        $httpClient     = $this->twitter->getLocalHttpClient();
         $httpRequest    = $httpClient->getLastRequest();
         $httpResponse   = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -347,7 +349,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         /* @var $response Zend_Rest_Client_Result */
         $response = $this->twitter->status->friendsTimeline( array('foo' => 'bar') );
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -362,7 +364,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         /* @var $response Zend_Rest_Client_Result */
         $response = $this->twitter->status->friendsTimeline( array('id' => 'zftestuser1') );
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -377,7 +379,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         /* @var $response Zend_Rest_Client_Result */
         $response = $this->twitter->status->friendsTimeline( array('id' => 'zftestuser1', 'page' => '2') );
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -393,7 +395,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         /* @var $response Zend_Rest_Client_Result */
         $response = $this->twitter->status->friendsTimeline( array('id' => 'zftestuser1', 'count' => '2') );
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -410,7 +412,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         /* @var $response Zend_Rest_Client_Result */
         $response = $this->twitter->status->userTimeline( array('id' => 'zftestuser1', 'count' => 2) );
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $raw_response = $httpResponse->getHeadersAsString() . $httpResponse->getBody();
@@ -425,7 +427,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         /* @var $response Zend_Rest_Client_Result */
         $response = $this->twitter->status->userTimeline( array('id' => 'zftestuser1', 'count' => 40) );
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -443,7 +445,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response = $this->twitter->status->update( 'Test Message - ' . rand() );
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -497,7 +499,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response2 = $this->twitter->status->show($status_id);
         $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -520,7 +522,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response2 = $this->twitter->favorite->create($update_id);
         $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -536,7 +538,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response = $this->twitter->favorite->favorites();
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -554,7 +556,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response2 = $this->twitter->favorite->destroy($update_id);
         $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -573,7 +575,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response2 = $this->twitter->status->destroy($update_id);
         $this->assertTrue($response2 instanceof Zend_Rest_Client_Result);
 
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -584,7 +586,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
     {
         $response = $this->twitter->user->friends();
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -595,7 +597,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
     {
         $response = $this->twitter->user->followers(array('id' =>'zftestuser1'));
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -606,7 +608,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
     {
         $response = $this->twitter->user->friends(array('id' =>'zftestuser1'));
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -631,7 +633,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
     {
         $response = $this->twitter->status->replies(array('page' => 1, 'since_id' => 10000, 'invalid_option' => 'doh'));
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
-        $httpClient    = Zend_Service_Twitter::getHttpClient();
+        $httpClient    = $this->twitter->getLocalHttpClient();
         $httpRequest   = $httpClient->getLastRequest();
         $httpResponse  = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -645,7 +647,7 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         $response = $this->twitter->friendship->destroy('zftestuser1');
         $this->assertTrue($response instanceof Zend_Rest_Client_Result);
 
-        $httpClient     = Zend_Service_Twitter::getHttpClient();
+        $httpClient     = $this->twitter->getLocalHttpClient();
         $httpRequest    = $httpClient->getLastRequest();
         $httpResponse   = $httpClient->getLastResponse();
         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
@@ -664,6 +666,16 @@ class Zend_Service_TwitterTest extends PHPUnit_Framework_TestCase
         }
         $twitter->account->endSession();
     }
+
+    /**
+     * @issue ZF-6284
+     */
+    public function testTwitterObjectsSoNotShareSameHttpClientToPreventConflictingAuthentication()
+    {
+        $twitter1 = new Zend_Service_Twitter('zftestuser1','zftestuser1');
+        $twitter2 = new Zend_Service_Twitter('zftestuser2','zftestuser2');
+        $this->assertFalse($twitter1->getLocalHttpClient() === $twitter2->getLocalHttpClient());
+    }
 }
 
 if (PHPUnit_MAIN_METHOD == 'Zend_Service_TwitterTest::main') {