/**
  * Factory function for SoapResponse.
  *
  * @param string $content     Content
  * @param string $location    Location
  * @param string $action      SOAP action
  * @param string $version     SOAP version
  * @param string $contentType Content type header
  *
  * @return BeSimple\SoapClient\SoapResponse
  */
 public static function create($content, $location, $action, $version, $contentType)
 {
     $response = new SoapResponse();
     $response->setContent($content);
     $response->setLocation($location);
     $response->setAction($action);
     $response->setVersion($version);
     $response->setContentType($contentType);
     return $response;
 }
 /**
  * Perform HTTP request with cURL.
  *
  * @param SoapRequest $soapRequest SoapRequest object
  *
  * @return SoapResponse
  */
 private function __doHttpRequest(SoapRequest $soapRequest)
 {
     // HTTP headers
     $soapAction = $soapRequest->getAction();
     $headers = array('Content-Type:' . $soapRequest->getContentType() . '; action="' . $soapAction . '"', 'SOAPAction: "' . $soapAction . '"');
     // execute HTTP request with cURL
     $responseSuccessfull = $this->curl->exec($soapRequest->getLocation(), $soapRequest->getContent(), $headers);
     // tracing enabled: store last request header and body
     if ($this->tracingEnabled === true) {
         $this->lastRequestHeaders = $this->curl->getRequestHeaders();
         $this->lastRequest = $soapRequest->getContent();
     }
     // in case of an error while making the http request throw a soapFault
     if ($responseSuccessfull === false) {
         // get error message from curl
         $faultstring = $this->curl->getErrorMessage();
         throw new \SoapFault('HTTP', $faultstring);
     }
     // tracing enabled: store last response header and body
     if ($this->tracingEnabled === true) {
         $this->lastResponseHeaders = $this->curl->getResponseHeaders();
         $this->lastResponse = $this->curl->getResponseBody();
     }
     // wrap response data in SoapResponse object
     $soapResponse = SoapResponse::create($this->curl->getResponseBody(), $soapRequest->getLocation(), $soapRequest->getAction(), $soapRequest->getVersion(), $this->curl->getResponseContentType());
     return $soapResponse;
 }
 /**
  * Perform HTTP request with cURL.
  *
  * @param SoapRequest $soapRequest SoapRequest object
  *
  * @return SoapResponse
  */
 private function __doHttpRequest(SoapRequest $soapRequest)
 {
     // HTTP headers
     $soapVersion = $soapRequest->getVersion();
     $soapAction = $soapRequest->getAction();
     if (SOAP_1_1 == $soapVersion) {
         $headers = array('Content-Type:' . $soapRequest->getContentType(), 'SOAPAction: "' . $soapAction . '"');
     } else {
         $headers = array('Content-Type:' . $soapRequest->getContentType() . '; action="' . $soapAction . '"');
     }
     $location = $soapRequest->getLocation();
     $content = $soapRequest->getContent();
     /*
      * Work around missing header/php://input access in PHP cli webserver by
      * setting headers additionally as GET parameters and SOAP request body
      * explicitly as POST variable
      */
     if ($this->cliWebserverWorkaround === true) {
         if (strpos($location, '?') === false) {
             $location .= '?';
         } else {
             $location .= '&';
         }
         $location .= SoapMessage::CONTENT_TYPE_HEADER . '=' . urlencode($soapRequest->getContentType());
         $location .= '&';
         $location .= SoapMessage::SOAP_ACTION_HEADER . '=' . urlencode($soapRequest->getAction());
         $content = http_build_query(array('request' => $content));
         $headers = array();
     }
     // execute HTTP request with cURL
     $responseSuccessfull = $this->curl->exec($location, $content, $headers);
     // tracing enabled: store last request header and body
     if ($this->tracingEnabled === true) {
         $this->lastRequestHeaders = $this->curl->getRequestHeaders();
         $this->lastRequest = $soapRequest->getContent();
     }
     // in case of an error while making the http request throw a soapFault
     if ($responseSuccessfull === false) {
         // get error message from curl
         $faultstring = $this->curl->getErrorMessage();
         throw new \SoapFault('HTTP', $faultstring);
     }
     // tracing enabled: store last response header and body
     if ($this->tracingEnabled === true) {
         $this->lastResponseHeaders = $this->curl->getResponseHeaders();
         $this->lastResponse = $this->curl->getResponseBody();
     }
     // wrap response data in SoapResponse object
     $soapResponse = SoapResponse::create($this->curl->getResponseBody(), $soapRequest->getLocation(), $soapRequest->getAction(), $soapRequest->getVersion(), $this->curl->getResponseContentType());
     return $soapResponse;
 }