WpOrg\Requests

Requests::request()public staticWP 1.0

Main interface for HTTP requests

This method initiates a request and sends it via a transport before parsing.

The $options parameter takes an associative array with the following options:

  • timeout: How long should we wait for a response?
    Note: for cURL, a minimum of 1 second applies, as DNS resolution
    operates at second-resolution only.
    (float, seconds with a millisecond precision, default: 10, example: 0.01)
  • connect_timeout: How long should we wait while trying to connect?
    (float, seconds with a millisecond precision, default: 10, example: 0.01)
  • useragent: Useragent to send to the server
    (string, default: php-requests/$version)
  • follow_redirects: Should we follow 3xx redirects?
    (boolean, default: true)
  • redirects: How many times should we redirect before erroring?
    (integer, default: 10)
  • blocking: Should we block processing on this request?
    (boolean, default: true)
  • filename: File to stream the body to instead.
    (string|boolean, default: false)
  • auth: Authentication handler or array of user/password details to use
    for Basic authentication
    (\WpOrg\Requests\Auth|array|boolean, default: false)
  • proxy: Proxy details to use for proxy by-passing and authentication
    (\WpOrg\Requests\Proxy|array|string|boolean, default: false)
  • max_bytes: Limit for the response body size.
    (integer|boolean, default: false)
  • idn: Enable IDN parsing
    (boolean, default: true)
  • transport: Custom transport. Either a class name, or a
    transport object. Defaults to the first working transport from
    {@see \WpOrg\Requests\Requests::getTransport()}
    (string|\WpOrg\Requests\Transport, default: {@see \WpOrg\Requests\Requests::getTransport()})
  • hooks: Hooks handler.
    (\WpOrg\Requests\HookManager, default: new WpOrg\Requests\Hooks())
  • verify: Should we verify SSL certificates? Allows passing in a custom
    certificate file as a string. (Using true uses the system-wide root
    certificate store instead, but this may have different behaviour
    across transports.)
    (string|boolean, default: certificates/cacert.pem)
  • verifyname: Should we verify the common name in the SSL certificate?
    (boolean, default: true)
  • data_format: How should we send the $data parameter?
    (string, one of 'query' or 'body', default: 'query' for
    HEAD/GET/DELETE, 'body' for POST/PUT/OPTIONS/PATCH)

Method of the class: Requests{}

No Hooks.

Return

\WpOrg\Requests\Response.

Usage

$result = Requests::request( $url, $headers, $data, $type, $options );
$url(string|Stringable) (required)
URL to request
$headers(array)
Extra headers to send with the request
Default: []
$data(array|null)
Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
Default: []
$type(string)
HTTP request type (use Requests constants)
Default: self::GET
$options(array)
Options for the request (see description for more information)
Default: []

Requests::request() code WP 6.6.2

public static function request($url, $headers = [], $data = [], $type = self::GET, $options = []) {
	if (InputValidator::is_string_or_stringable($url) === false) {
		throw InvalidArgument::create(1, '$url', 'string|Stringable', gettype($url));
	}

	if (is_string($type) === false) {
		throw InvalidArgument::create(4, '$type', 'string', gettype($type));
	}

	if (is_array($options) === false) {
		throw InvalidArgument::create(5, '$options', 'array', gettype($options));
	}

	if (empty($options['type'])) {
		$options['type'] = $type;
	}

	$options = array_merge(self::get_default_options(), $options);

	self::set_defaults($url, $headers, $data, $type, $options);

	$options['hooks']->dispatch('requests.before_request', [&$url, &$headers, &$data, &$type, &$options]);

	if (!empty($options['transport'])) {
		$transport = $options['transport'];

		if (is_string($options['transport'])) {
			$transport = new $transport();
		}
	} else {
		$need_ssl     = (stripos($url, 'https://') === 0);
		$capabilities = [Capability::SSL => $need_ssl];
		$transport    = self::get_transport($capabilities);
	}

	$response = $transport->request($url, $headers, $data, $options);

	$options['hooks']->dispatch('requests.before_parse', [&$response, $url, $headers, $data, $type, $options]);

	return self::parse_response($response, $url, $headers, $data, $options);
}