Class yii\httpclient\Request

Inheritanceyii\httpclient\Request » yii\httpclient\Message » yii\base\Component
Available since extension's version2.0
Source Code https://github.com/yiisoft/yii2-httpclient/blob/master/src/Request.php

Request represents HTTP request.

Public Properties

Hide inherited properties

Property Type Description Defined By
$client yii\httpclient\Client Owner client instance. yii\httpclient\Message
$content string Raw body. yii\httpclient\Message
$cookies \yii\web\CookieCollection|\yii\web\Cookie[] The cookie collection. yii\httpclient\Message
$data mixed Content data fields. yii\httpclient\Message
$format string Body format name. yii\httpclient\Message
$fullUrl string Full target URL. yii\httpclient\Request
$headers \yii\web\HeaderCollection The header collection. yii\httpclient\Message
$method string Request method. yii\httpclient\Request
$options array Request options. yii\httpclient\Request
$url string|array Target URL or URL parameters. yii\httpclient\Request

Public Methods

Hide inherited methods

Method Description Defined By
__toString() PHP magic method that returns the string representation of this object. yii\httpclient\Message
addContent() Adds a content part for multi-part content request. yii\httpclient\Request
addCookies() Adds more cookies to the already defined ones. yii\httpclient\Message
addData() Adds data fields to the existing ones. yii\httpclient\Request
addFile() Adds a file for upload as multi-part content. yii\httpclient\Request
addFileContent() Adds a string as a file upload. yii\httpclient\Request
addHeaders() Adds more headers to the already defined ones. yii\httpclient\Message
addOptions() Adds more options to already defined ones. yii\httpclient\Request
afterSend() This method is invoked right after this request is sent. yii\httpclient\Request
beforeSend() This method is invoked right before this request is sent. yii\httpclient\Request
composeHeaderLines() Composes raw header lines from $headers. yii\httpclient\Request
getContent() Returns HTTP message raw content. yii\httpclient\Message
getCookies() Returns the cookie collection. yii\httpclient\Message
getData() Returns the data fields, parsed from raw content. yii\httpclient\Message
getFormat() Returns body format. yii\httpclient\Message
getFullUrl() Returns full target URL, including yii\httpclient\Client::$baseUrl as a string. yii\httpclient\Request
getHeaders() Returns the header collection. yii\httpclient\Message
getMethod() yii\httpclient\Request
getOptions() yii\httpclient\Request
getOutputFile() Gets the outputFile property yii\httpclient\Request
getUrl() Returns target URL. yii\httpclient\Request
hasContent() Checks if content with provided name exists yii\httpclient\Message
hasCookies() Checks of HTTP message contains any cookie. yii\httpclient\Message
hasHeaders() Checks of HTTP message contains any header. yii\httpclient\Message
prepare() Prepares this request instance for sending. yii\httpclient\Request
responseTime() Return the response time in seconds yii\httpclient\Request
send() Sends this request. yii\httpclient\Request
setContent() Sets the HTTP message raw content. yii\httpclient\Message
setCookies() Sets the cookies associated with HTTP message. yii\httpclient\Message
setData() Sets the data fields, which composes message content. yii\httpclient\Request
setFormat() Sets body format. yii\httpclient\Message
setFullUrl() Sets full target URL. yii\httpclient\Request
setHeaders() Sets the HTTP headers associated with HTTP message. yii\httpclient\Message
setMethod() yii\httpclient\Request
setOptions() Following options are supported: - timeout: int, the maximum number of seconds to allow request to be executed. yii\httpclient\Request
setOutputFile() Used with yii\httpclient\CurlTransport to set the file that the transfer should be written to yii\httpclient\Request
setUrl() Sets target URL. yii\httpclient\Request
toString() Returns string representation of this HTTP message. yii\httpclient\Request

Protected Methods

Hide inherited methods

Method Description Defined By
defaultFormat() Returns default format name. yii\httpclient\Message

Events

Hide inherited events

Event Type Description Defined By
EVENT_AFTER_SEND yii\httpclient\RequestEvent An event raised right after request has been sent. yii\httpclient\Request
EVENT_BEFORE_SEND yii\httpclient\RequestEvent An event raised right before sending request. yii\httpclient\Request

Property Details

Hide inherited properties

$fullUrl public property

Full target URL.

public string $fullUrl null
$method public property

Request method.

public string $method null
$options public property

Request options.

public array $options null
$url public property

Target URL or URL parameters.

public string|array $url null

Method Details

Hide inherited methods

__toString() public method

Defined in: yii\httpclient\Message::__toString()

PHP magic method that returns the string representation of this object.

public string __toString ( )
return string

The string representation of this object.

                public function __toString()
{
    // __toString cannot throw exception
    // use trigger_error to bypass this limitation
    try {
        return $this->toString();
    } catch (\Exception $e) {
        ErrorHandler::convertExceptionToError($e);
        return '';
    }
}

            
addContent() public method

Adds a content part for multi-part content request.

public $this addContent ( $name, $content, $options = [] )
$name string

Part (form input) name.

$content string

Content.

$options array

Content part options, valid options are:

  • contentType - string, part content type
  • fileName - string, name of the uploading file
  • mimeType - string, part content type in case of file uploading
return $this

Self reference.

                public function addContent($name, $content, $options = [])
{
    $multiPartContent = $this->getContent();
    if (!is_array($multiPartContent)) {
        $multiPartContent = [];
    }
    $options['content'] = $content;
    $alias = $this->generateContentAlias($name);
    $this->addAliasToContentMap($name, $alias);
    $multiPartContent[$alias] = $options;
    $this->setContent($multiPartContent);
    return $this;
}

            
addCookies() public method

Defined in: yii\httpclient\Message::addCookies()

Adds more cookies to the already defined ones.

public $this addCookies ( array $cookies )
$cookies \yii\web\Cookie[]|array

Additional cookies.

return $this

Self reference.

                public function addCookies(array $cookies)
{
    $cookieCollection = $this->getCookies();
    foreach ($cookies as $cookie) {
        if (!is_object($cookie)) {
            $cookie = new Cookie($cookie);
        }
        $cookieCollection->add($cookie);
    }
    return $this;
}

            
addData() public method (available since version 2.0.1)

Adds data fields to the existing ones.

public $this addData ( $data )
$data array

Additional content data fields.

return $this

Self reference.

                public function addData($data)
{
    if ($this->isPrepared) {
        $this->setContent(null);
        $this->isPrepared = false;
    }
    return parent::addData($data);
}

            
addFile() public method

Adds a file for upload as multi-part content.

See also addContent().

public $this addFile ( $name, $fileName, $options = [] )
$name string

Part (form input) name

$fileName string

Full name of the source file.

$options array

Content part options, valid options are:

  • fileName - string, base name of the uploading file, if not set it base name of the source file will be used.
  • mimeType - string, file mime type, if not set it will be determine automatically from source file.
throws \yii\base\InvalidConfigException

                public function addFile($name, $fileName, $options = [])
{
    $content = file_get_contents($fileName);
    if (!isset($options['mimeType'])) {
        $options['mimeType'] = FileHelper::getMimeType($fileName);
    }
    if (!isset($options['fileName'])) {
        $options['fileName'] = basename($fileName);
    }
    return $this->addContent($name, $content, $options);
}

            
addFileContent() public method

Adds a string as a file upload.

See also addContent().

public $this addFileContent ( $name, $content, $options = [] )
$name string

Part (form input) name

$content string

File content.

$options array

Content part options, valid options are:

  • fileName - string, base name of the uploading file.
  • mimeType - string, file mime type, if not set it 'application/octet-stream' will be used.

                public function addFileContent($name, $content, $options = [])
{
    if (!isset($options['mimeType'])) {
        $options['mimeType'] = 'application/octet-stream';
    }
    if (!isset($options['fileName'])) {
        $options['fileName'] = $name . '.dat';
    }
    return $this->addContent($name, $content, $options);
}

            
addHeaders() public method

Defined in: yii\httpclient\Message::addHeaders()

Adds more headers to the already defined ones.

public $this addHeaders ( array $headers )
$headers array

Additional headers in format: [headerName => headerValue]

return $this

Self reference.

                public function addHeaders(array $headers)
{
    $headerCollection = $this->getHeaders();
    foreach ($headers as $name => $value) {
        $headerCollection->add($name, $value);
    }
    return $this;
}

            
addOptions() public method

Adds more options to already defined ones.

Please refer to setOptions() on how to specify options.

public $this addOptions ( array $options )
$options array

Additional options

return $this

Self reference.

                public function addOptions(array $options)
{
    // `array_merge()` will produce invalid result for cURL options,
    // while `ArrayHelper::merge()` is unable to override cURL options
    foreach ($options as $key => $value) {
        if (is_array($value) && isset($this->_options[$key])) {
            $value = ArrayHelper::merge($this->_options[$key], $value);
        }
        $this->_options[$key] = $value;
    }
    return $this;
}

            
afterSend() public method (available since version 2.0.1)

This method is invoked right after this request is sent.

The method will invoke yii\httpclient\Client::afterSend() and trigger the EVENT_AFTER_SEND event.

public void afterSend ( $response )
$response yii\httpclient\Response

Received response instance.

                public function afterSend($response)
{
    $this->_timeElapsed = microtime(true)-$this->_startTime;
    $this->client->afterSend($this, $response);
    $event = new RequestEvent();
    $event->request = $this;
    $event->response = $response;
    $this->trigger(self::EVENT_AFTER_SEND, $event);
}

            
beforeSend() public method (available since version 2.0.1)

This method is invoked right before this request is sent.

The method will invoke yii\httpclient\Client::beforeSend() and trigger the EVENT_BEFORE_SEND event.

public void beforeSend ( )

                public function beforeSend()
{
    $this->client->beforeSend($this);
    $event = new RequestEvent();
    $event->request = $this;
    $this->trigger(self::EVENT_BEFORE_SEND, $event);
    $this->_startTime = microtime(true);
}

            
composeHeaderLines() public method

Composes raw header lines from $headers.

Each line will be a string in format: 'header-name: value'.

public array composeHeaderLines ( )
return array

Raw header lines.

                public function composeHeaderLines()
{
    $headers = parent::composeHeaderLines();
    if ($this->hasCookies()) {
        $headers[] = $this->composeCookieHeader();
    }
    return $headers;
}

            
defaultFormat() protected method

Defined in: yii\httpclient\Message::defaultFormat()

Returns default format name.

protected string defaultFormat ( )
return string

Default format name.

                protected function defaultFormat()
{
    return Client::FORMAT_URLENCODED;
}

            
getContent() public method

Defined in: yii\httpclient\Message::getContent()

Returns HTTP message raw content.

public string getContent ( )
return string

Raw body.

                public function getContent()
{
    return $this->_content;
}

            
getCookies() public method

Defined in: yii\httpclient\Message::getCookies()

Returns the cookie collection.

The cookie collection contains the cookies associated with HTTP message.

public \yii\web\CookieCollection|\yii\web\Cookie[] getCookies ( )
return \yii\web\CookieCollection|\yii\web\Cookie[]

The cookie collection.

                public function getCookies()
{
    if (!is_object($this->_cookies)) {
        $cookieCollection = new CookieCollection();
        if (is_array($this->_cookies)) {
            foreach ($this->_cookies as $cookie) {
                if (!is_object($cookie)) {
                    $cookie = new Cookie($cookie);
                }
                $cookieCollection->add($cookie);
            }
        }
        $this->_cookies = $cookieCollection;
    }
    return $this->_cookies;
}

            
getData() public method

Defined in: yii\httpclient\Message::getData()

Returns the data fields, parsed from raw content.

public mixed getData ( )
return mixed

Content data fields.

                public function getData()
{
    return $this->_data;
}

            
getFormat() public method

Defined in: yii\httpclient\Message::getFormat()

Returns body format.

public string getFormat ( )
return string

Body format name.

                public function getFormat()
{
    if ($this->_format === null) {
        $this->_format = $this->defaultFormat();
    }
    return $this->_format;
}

            
getFullUrl() public method

Returns full target URL, including yii\httpclient\Client::$baseUrl as a string.

public string getFullUrl ( )
return string

Full target URL.

                public function getFullUrl()
{
    if ($this->_fullUrl === null) {
        $this->_fullUrl = $this->createFullUrl($this->getUrl());
    }
    return $this->_fullUrl;
}

            
getHeaders() public method

Defined in: yii\httpclient\Message::getHeaders()

Returns the header collection.

The header collection contains the HTTP headers associated with HTTP message.

public \yii\web\HeaderCollection getHeaders ( )
return \yii\web\HeaderCollection

The header collection

                public function getHeaders()
{
    if (!is_object($this->_headers)) {
        $headerCollection = new HeaderCollection();
        if (is_array($this->_headers)) {
            foreach ($this->_headers as $name => $value) {
                if (is_int($name)) {
                    // parse raw header :
                    $rawHeader = $value;
                    if (strpos($rawHeader, 'HTTP/') === 0) {
                        $parts = explode(' ', $rawHeader, 3);
                        $headerCollection->add('http-code', $parts[1]);
                    } elseif (($separatorPos = strpos($rawHeader, ':')) !== false) {
                        $name = strtolower(trim(substr($rawHeader, 0, $separatorPos)));
                        $value = trim(substr($rawHeader, $separatorPos + 1));
                        $headerCollection->add($name, $value);
                    } else {
                        $headerCollection->add('raw', $rawHeader);
                    }
                } else {
                    $headerCollection->set($name, $value);
                }
            }
        }
        $this->_headers = $headerCollection;
    }
    return $this->_headers;
}

            
getMethod() public method

public string getMethod ( )
return string

Request method

                public function getMethod()
{
    return $this->_method;
}

            
getOptions() public method

public array getOptions ( )
return array

Request options.

                public function getOptions()
{
    return $this->_options;
}

            
getOutputFile() public method (available since version 2.0.9)

Gets the outputFile property

public resource getOutputFile ( )

                public function getOutputFile()
{
    return $this->_outputFile;
}

            
getUrl() public method

Returns target URL.

public string|array getUrl ( )
return string|array

Target URL or URL parameters

                public function getUrl()
{
    return $this->_url;
}

            
hasContent() public method (available since version 2.0.10)

Defined in: yii\httpclient\Message::hasContent()

Checks if content with provided name exists

public boolean hasContent ( $key )
$key

String Name of the content parameter

                public function hasContent($key)
{
    $content = $this->getContent();
    return is_array($content) && isset($content[$key]);
}

            
hasCookies() public method

Defined in: yii\httpclient\Message::hasCookies()

Checks of HTTP message contains any cookie.

Using this method you are able to check cookie presence without instantiating CookieCollection.

public boolean hasCookies ( )
return boolean

Whether message contains any cookie.

                public function hasCookies()
{
    if (is_object($this->_cookies)) {
        return $this->_cookies->getCount() > 0;
    }
    return !empty($this->_cookies);
}

            
hasHeaders() public method

Defined in: yii\httpclient\Message::hasHeaders()

Checks of HTTP message contains any header.

Using this method you are able to check cookie presence without instantiating HeaderCollection.

public boolean hasHeaders ( )
return boolean

Whether message contains any header.

                public function hasHeaders()
{
    if (is_object($this->_headers)) {
        return $this->_headers->getCount() > 0;
    }
    return !empty($this->_headers);
}

            
prepare() public method

Prepares this request instance for sending.

This method should be invoked by transport before sending a request. Do not call this method unless you know what you are doing.

public $this prepare ( )
return $this

Self reference.

                public function prepare()
{
    $content = $this->getContent();
    if ($content === null) {
        $this->getFormatter()->format($this);
    } elseif (is_array($content)) {
        $this->prepareMultiPartContent($content);
    }
    $this->isPrepared = true;
    return $this;
}

            
responseTime() public method (available since version 2.0.12)

Return the response time in seconds

public float responseTime ( )
return float

The seconds elapsed from request to response

                public function responseTime()
{
    return $this->_timeElapsed;
}

            
send() public method

Sends this request.

public yii\httpclient\Response send ( )
return yii\httpclient\Response

Response instance.

throws yii\httpclient\Exception

                public function send()
{
    return $this->client->send($this);
}

            
setContent() public method

Defined in: yii\httpclient\Message::setContent()

Sets the HTTP message raw content.

public $this setContent ( $content )
$content string

Raw content.

return $this

Self reference.

                public function setContent($content)
{
    $this->_content = $content;
    return $this;
}

            
setCookies() public method

Defined in: yii\httpclient\Message::setCookies()

Sets the cookies associated with HTTP message.

public $this setCookies ( $cookies )
$cookies \yii\web\CookieCollection|\yii\web\Cookie[]|array

Cookie collection or cookies list.

return $this

Self reference.

                public function setCookies($cookies)
{
    $this->_cookies = $cookies;
    return $this;
}

            
setData() public method

Sets the data fields, which composes message content.

public $this setData ( $data )
$data mixed

Content data fields.

return $this

Self reference.

                public function setData($data)
{
    if ($this->isPrepared) {
        $this->setContent(null);
        $this->isPrepared = false;
    }
    return parent::setData($data);
}

            
setFormat() public method

Defined in: yii\httpclient\Message::setFormat()

Sets body format.

public $this setFormat ( $format )
$format string

Body format name.

return $this

Self reference.

                public function setFormat($format)
{
    $this->_format = $format;
    return $this;
}

            
setFullUrl() public method (available since version 2.0.3)

Sets full target URL.

This method can be used during request formatting and preparation. Do not use it for the target URL specification, use setUrl() instead.

public $this setFullUrl ( $fullUrl )
$fullUrl string

Full target URL.

return $this

Self reference.

                public function setFullUrl($fullUrl)
{
    $this->_fullUrl = $fullUrl;
    return $this;
}

            
setHeaders() public method

Defined in: yii\httpclient\Message::setHeaders()

Sets the HTTP headers associated with HTTP message.

public $this setHeaders ( $headers )
$headers array|\yii\web\HeaderCollection

Headers collection or headers list in format: [headerName => headerValue]

return $this

Self reference.

                public function setHeaders($headers)
{
    $this->_headers = $headers;
    return $this;
}

            
setMethod() public method

public $this setMethod ( $method )
$method string

Request method

return $this

Self reference.

                public function setMethod($method)
{
    $this->_method = $method;
    return $this;
}

            
setOptions() public method

Following options are supported: - timeout: int, the maximum number of seconds to allow request to be executed.

  • proxy: string, URI specifying address of proxy server. (e.g. tcp://proxy.example.com:5100).
  • userAgent: string, the contents of the "User-Agent: " header to be used in a HTTP request.
  • followLocation: bool, whether to follow any "Location: " header that the server sends as part of the HTTP header.
  • maxRedirects: int, the max number of redirects to follow.
  • protocolVersion: float|string, HTTP protocol version.
  • sslVerifyPeer: bool, whether verification of the peer's certificate should be performed.
  • sslCafile: string, location of Certificate Authority file on local filesystem which should be used with the 'sslVerifyPeer' option to authenticate the identity of the remote peer.
  • sslCapath: string, a directory that holds multiple CA certificates.

You may set options using keys, which are specific to particular transport, like [CURLOPT_VERBOSE => true] in case there is a necessity for it.

public $this setOptions ( array $options )
$options array

Request options.

return $this

Self reference.

                public function setOptions(array $options)
{
    $this->_options = $options;
    return $this;
}

            
setOutputFile() public method (available since version 2.0.9)

Used with yii\httpclient\CurlTransport to set the file that the transfer should be written to

See also \yii\httpclient\CURLOPT_FILE.

public $this setOutputFile ( $file )
$file resource
return $this

Self reference.

                public function setOutputFile($file)
{
    $this->_outputFile = $file;
    return $this;
}

            
setUrl() public method

Sets target URL.

public $this setUrl ( $url )
$url string|array

Use a string to represent a URL (e.g. http://some-domain.com, item/list), or an array to represent a URL with query parameters (e.g. ['item/list', 'param1' => 'value1']).

return $this

Self reference.

                public function setUrl($url)
{
    $this->_url = $url;
    $this->_fullUrl = null;
    return $this;
}

            
toString() public method

Returns string representation of this HTTP message.

public string toString ( )
return string

The string representation of this HTTP message.

                public function toString()
{
    if (!$this->isPrepared) {
        $this->prepare();
    }
    $result = strtoupper($this->getMethod()) . ' ' . $this->getFullUrl();
    $parentResult = parent::toString();
    if ($parentResult !== '') {
        $result .= "\n" . $parentResult;
    }
    return $result;
}

            

Event Details

Hide inherited properties

EVENT_AFTER_SEND event of type yii\httpclient\RequestEvent

An event raised right after request has been sent.

EVENT_BEFORE_SEND event of type yii\httpclient\RequestEvent

An event raised right before sending request.