Title: Http
Published: March 29, 2023
Last modified: November 8, 2023

---

# class Http {}

## In this article

 * [Methods](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/?output_format=md#methods)
 * [Source](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/?output_format=md#source)

[ Back to top](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/?output_format=md#wp--skip-link--target)

Exception based on HTTP response

## 󠀁[Methods](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/?output_format=md#methods)󠁿

| Name | Description | 
| [Http::__construct](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/__construct/) | Create a new exception | 
| [Http::get_class](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/get_class/) | Get the correct exception class for a given error code | 
| [Http::getReason](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/getreason/) | Get the status message. |

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wporg-requests-exception-http/?output_format=md#source)󠁿

    ```php
    class Http extends Exception {
    	/**
    	 * HTTP status code
    	 *
    	 * @var integer
    	 */
    	protected $code = 0;

    	/**
    	 * Reason phrase
    	 *
    	 * @var string
    	 */
    	protected $reason = 'Unknown';

    	/**
    	 * Create a new exception
    	 *
    	 * There is no mechanism to pass in the status code, as this is set by the
    	 * subclass used. Reason phrases can vary, however.
    	 *
    	 * @param string|null $reason Reason phrase
    	 * @param mixed $data Associated data
    	 */
    	public function __construct($reason = null, $data = null) {
    		if ($reason !== null) {
    			$this->reason = $reason;
    		}

    		$message = sprintf('%d %s', $this->code, $this->reason);
    		parent::__construct($message, 'httpresponse', $data, $this->code);
    	}

    	/**
    	 * Get the status message.
    	 *
    	 * @return string
    	 */
    	public function getReason() {
    		return $this->reason;
    	}

    	/**
    	 * Get the correct exception class for a given error code
    	 *
    	 * @param int|bool $code HTTP status code, or false if unavailable
    	 * @return string Exception class name to use
    	 */
    	public static function get_class($code) {
    		if (!$code) {
    			return StatusUnknown::class;
    		}

    		$class = sprintf('\WpOrg\Requests\Exception\Http\Status%d', $code);
    		if (class_exists($class)) {
    			return $class;
    		}

    		return StatusUnknown::class;
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/requests/src/exception/http.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/Requests/src/Exception/Http.php#L18)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/Requests/src/Exception/Http.php#L18-L78)

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwporg-requests-exception-http%2F)
before being able to contribute a note or feedback.