Class yii\httpclient\UrlEncodedFormatter
Inheritance | yii\httpclient\UrlEncodedFormatter » yii\base\BaseObject |
---|---|
Implements | yii\httpclient\FormatterInterface |
Available since extension's version | 2.0 |
Source Code | https://github.com/yiisoft/yii2-httpclient/blob/master/src/UrlEncodedFormatter.php |
UrlEncodedFormatter formats HTTP message as 'application/x-www-form-urlencoded'.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$charset | string | The content charset. | yii\httpclient\UrlEncodedFormatter |
$encodingType | integer | URL encoding type. | yii\httpclient\UrlEncodedFormatter |
Public Methods
Method | Description | Defined By |
---|---|---|
format() | Formats given HTTP request message. | yii\httpclient\UrlEncodedFormatter |
Property Details
The content charset. If not set, it will use the value of \yii\base\Application::charset.
URL encoding type. Possible values are:
- PHP_QUERY_RFC1738 - encoding is performed per 'RFC 1738' and the 'application/x-www-form-urlencoded' media type, which implies that spaces are encoded as plus (+) signs. This is most common encoding type used by most web applications.
- PHP_QUERY_RFC3986 - then encoding is performed according to 'RFC 3986', and spaces will be percent encoded (%20). This encoding type is required by OpenID and OAuth protocols.
Method Details
Formats given HTTP request message.
public yii\httpclient\Request format ( yii\httpclient\Request $request ) | ||
$request | yii\httpclient\Request |
HTTP request instance. |
return | yii\httpclient\Request |
Formatted request. |
---|
public function format(Request $request)
{
if (($data = $request->getData()) !== null) {
$content = http_build_query((array)$data, '', '&', $this->encodingType);
}
if (strcasecmp('GET', $request->getMethod()) === 0) {
if (!empty($content)) {
$request->setFullUrl(null);
$url = $request->getFullUrl();
$url .= (strpos($url, '?') === false) ? '?' : '&';
$url .= $content;
$request->setFullUrl($url);
}
return $request;
}
$charset = $this->charset === null ? Yii::$app->charset : $this->charset;
$charset = $charset ? '; charset=' . $charset : '';
$request->getHeaders()->set('Content-Type', 'application/x-www-form-urlencoded' . $charset);
if (isset($content)) {
$request->setContent($content);
}
if (!isset($content) && !isset($request->getOptions()[CURLOPT_INFILE])) {
$request->getHeaders()->set('Content-Length', '0');
}
return $request;
}