示例#1
0
 public function testDetach()
 {
     $request = new HTTP_Request2();
     $observer = new HTTP_Request2_MockObserver();
     $observer2 = new HTTP_Request2_MockObserver();
     $request->attach($observer);
     $request->detach($observer2);
     // should not be a error
     $request->setLastEvent('first');
     $request->detach($observer);
     $request->setLastEvent('second');
     $this->assertEquals(1, $observer->calls);
     $this->assertEquals(array('name' => 'first', 'data' => null), $observer->event);
 }
示例#2
0
 /**
  * Sends request to the remote server and returns its response
  *
  * @param    HTTP_Request2
  * @return   HTTP_Request2_Response
  * @throws   HTTP_Request2_Exception
  */
 public function sendRequest(HTTP_Request2 $request)
 {
     if (!extension_loaded('curl')) {
         throw new HTTP_Request2_LogicException('cURL extension not available', HTTP_Request2_Exception::MISCONFIGURATION);
     }
     $this->request = $request;
     $this->response = null;
     $this->position = 0;
     $this->eventSentHeaders = false;
     $this->eventReceivedHeaders = false;
     try {
         if (false === curl_exec($ch = $this->createCurlHandle())) {
             $e = self::wrapCurlError($ch);
         }
     } catch (Exception $e) {
     }
     if (isset($ch)) {
         $this->lastInfo = curl_getinfo($ch);
         curl_close($ch);
     }
     $response = $this->response;
     unset($this->request, $this->requestBody, $this->response);
     if (!empty($e)) {
         throw $e;
     }
     if ($jar = $request->getCookieJar()) {
         $jar->addCookiesFromResponse($response, $request->getUrl());
     }
     if (0 < $this->lastInfo['size_download']) {
         $request->setLastEvent('receivedBody', $response);
     }
     return $response;
 }
示例#3
0
 /**
  * Sends request to the remote server and returns its response
  *
  * @param    HTTP_Request2
  * @return   HTTP_Request2_Response
  * @throws   HTTP_Request2_Exception
  */
 public function sendRequest(HTTP_Request2 $request)
 {
     if (!extension_loaded('curl')) {
         throw new HTTP_Request2_Exception('cURL extension not available');
     }
     $this->request = $request;
     $this->response = null;
     $this->position = 0;
     $this->eventSentHeaders = false;
     $this->eventReceivedHeaders = false;
     try {
         if (false === curl_exec($ch = $this->createCurlHandle())) {
             $errorMessage = 'Error sending request: #' . curl_errno($ch) . ' ' . curl_error($ch);
         }
     } catch (Exception $e) {
     }
     $this->lastInfo = curl_getinfo($ch);
     curl_close($ch);
     $response = $this->response;
     unset($this->request, $this->requestBody, $this->response);
     if (!empty($e)) {
         throw $e;
     } elseif (!empty($errorMessage)) {
         throw new HTTP_Request2_Exception($errorMessage);
     }
     if (0 < $this->lastInfo['size_download']) {
         $request->setLastEvent('receivedBody', $response);
     }
     return $response;
 }