Title: Unexpected HTTP Error
Last modified: August 19, 2016

---

# Unexpected HTTP Error

 *  [fanofthepressthatisword](https://wordpress.org/support/users/fanofthepressthatisword/)
 * (@fanofthepressthatisword)
 * [15 years, 10 months ago](https://wordpress.org/support/topic/unexpected-http-error-1/)
 * Hi everyone
 * When I try to search for new plugins or themes I get the message
 * **“An Unexpected HTTP Error occured during the API request.”**
 * I have found several websites which recommend that I edit my http.php file on
   line 223 by changing the timeout from 5 to 30.
 * Unfortunately I do not have a line 223 or anything like it, mine stops at around
   line 160.
 * I have also searched the file for “timeout” etc but to no avail.
 * Can someone please tell me how to fix this error, as I’d really like to try out
   some new themes.
 * Thanks for your help

Viewing 4 replies - 1 through 4 (of 4 total)

 *  [Samuel B](https://wordpress.org/support/users/samboll/)
 * (@samboll)
 * [15 years, 10 months ago](https://wordpress.org/support/topic/unexpected-http-error-1/#post-1619680)
 * 2.9.2 `http.php` had this function
    it is not there in 3.0.x
 * not guaranteeing this will work – haven’t tested it
 * always back up 1st
 * add this to your `http.php`
 *     ```
       function request( $url, $args = array() ) {
       		global $wp_version;
   
       		$defaults = array(
       			'method' => 'GET',
       			'timeout' => apply_filters( 'http_request_timeout', 5),
       			'redirection' => apply_filters( 'http_request_redirection_count', 5),
       			'httpversion' => apply_filters( 'http_request_version', '1.0'),
       			'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )  ),
       			'blocking' => true,
       			'headers' => array(),
       			'cookies' => array(),
       			'body' => null,
       			'compress' => false,
       			'decompress' => true,
       			'sslverify' => true
       		);
   
       		$r = wp_parse_args( $args, $defaults );
       		$r = apply_filters( 'http_request_args', $r, $url );
   
       		// Allow plugins to short-circuit the request
       		$pre = apply_filters( 'pre_http_request', false, $r, $url );
       		if ( false !== $pre )
       			return $pre;
   
       		$arrURL = parse_url($url);
   
       		if ( $this->block_request( $url ) )
       			return new WP_Error('http_request_failed', __('User has blocked requests through HTTP.'));
       ```
   
 * change the timeout as recommended
 *  Thread Starter [fanofthepressthatisword](https://wordpress.org/support/users/fanofthepressthatisword/)
 * (@fanofthepressthatisword)
 * [15 years, 10 months ago](https://wordpress.org/support/topic/unexpected-http-error-1/#post-1619748)
 * Hi Samuel
 * Thanks for taking the time to reply, it’s much appreciated!!
 * Unfortunately that doesn’t seem to work, do you think I put in the correct place
   within the http.php file?
 *     ```
       <?php
       /**
        * Simple and uniform HTTP request API.
        *
        * Will eventually replace and standardize the WordPress HTTP requests made.
        *
        * @link http://trac.wordpress.org/ticket/4779 HTTP API Proposal
        *
        * @package WordPress
        * @subpackage HTTP
        * @since 2.7.0
        */
   
       /**
        * Returns the initialized WP_Http Object
        *
        * @since 2.7.0
        * @access private
        *
        * @return WP_Http HTTP Transport object.
        */
       function &_wp_http_get_object() {
       	static $http;
   
       	if ( is_null($http) )
       		$http = new WP_Http();
   
       	return $http;
       }
   
       /**
        * Retrieve the raw response from the HTTP request.
        *
        * The array structure is a little complex.
        *
        * <code>
        * $res = array( 'headers' => array(), 'response' => array('code' => int, 'message' => string) );
        * </code>
        *
        * All of the headers in $res['headers'] are with the name as the key and the
        * value as the value. So to get the User-Agent, you would do the following.
        *
        * <code>
        * $user_agent = $res['headers']['user-agent'];
        * </code>
        *
        * The body is the raw response content and can be retrieved from $res['body'].
        *
        * This function is called first to make the request and there are other API
        * functions to abstract out the above convoluted setup.
        *
        * @since 2.7.0
        *
        * @param string $url Site URL to retrieve.
        * @param array $args Optional. Override the defaults.
        * @return WP_Error|array The response or WP_Error on failure.
        */
       function wp_remote_request($url, $args = array()) {
       	$objFetchSite = _wp_http_get_object();
       	return $objFetchSite->request($url, $args);
       }
   
       /**
        * Retrieve the raw response from the HTTP request using the GET method.
        *
        * @see wp_remote_request() For more information on the response array format.
        *
        * @since 2.7.0
        *
        * @param string $url Site URL to retrieve.
        * @param array $args Optional. Override the defaults.
        * @return WP_Error|array The response or WP_Error on failure.
        */
       function wp_remote_get($url, $args = array()) {
       	$objFetchSite = _wp_http_get_object();
       	return $objFetchSite->get($url, $args);
       }
   
       /**
        * Retrieve the raw response from the HTTP request using the POST method.
        *
        * @see wp_remote_request() For more information on the response array format.
        *
        * @since 2.7.0
        *
        * @param string $url Site URL to retrieve.
        * @param array $args Optional. Override the defaults.
        * @return WP_Error|array The response or WP_Error on failure.
        */
       function wp_remote_post($url, $args = array()) {
       	$objFetchSite = _wp_http_get_object();
       	return $objFetchSite->post($url, $args);
       }
   
       /**
        * Retrieve the raw response from the HTTP request using the HEAD method.
        *
        * @see wp_remote_request() For more information on the response array format.
        *
        * @since 2.7.0
        *
        * @param string $url Site URL to retrieve.
        * @param array $args Optional. Override the defaults.
        * @return WP_Error|array The response or WP_Error on failure.
        */
       function wp_remote_head($url, $args = array()) {
       	$objFetchSite = _wp_http_get_object();
       	return $objFetchSite->head($url, $args);
       }
   
       /**
        * Retrieve only the headers from the raw response.
        *
        * @since 2.7.0
        *
        * @param array $response HTTP response.
        * @return array The headers of the response. Empty array if incorrect parameter given.
        */
       function wp_remote_retrieve_headers(&$response) {
       	if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers']))
       		return array();
   
       	return $response['headers'];
       }
   
       /**
        * Retrieve a single header by name from the raw response.
        *
        * @since 2.7.0
        *
        * @param array $response
        * @param string $header Header name to retrieve value from.
        * @return string The header value. Empty string on if incorrect parameter given, or if the header doesnt exist.
        */
       function wp_remote_retrieve_header(&$response, $header) {
       	if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers']))
       		return '';
   
       	if ( array_key_exists($header, $response['headers']) )
       		return $response['headers'][$header];
   
       	return '';
       }
   
       /**
        * Retrieve only the response code from the raw response.
        *
        * Will return an empty array if incorrect parameter value is given.
        *
        * @since 2.7.0
        *
        * @param array $response HTTP response.
        * @return string the response code. Empty string on incorrect parameter given.
        */
       function wp_remote_retrieve_response_code(&$response) {
       	if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response']))
       		return '';
   
       	return $response['response']['code'];
       }
   
       /**
        * Retrieve only the response message from the raw response.
        *
        * Will return an empty array if incorrect parameter value is given.
        *
        * @since 2.7.0
        *
        * @param array $response HTTP response.
        * @return string The response message. Empty string on incorrect parameter given.
        */
       function wp_remote_retrieve_response_message(&$response) {
       	if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response']))
       		return '';
   
       	return $response['response']['message'];
       }
   
       /**
        * Retrieve only the body from the raw response.
        *
        * @since 2.7.0
        *
        * @param array $response HTTP response.
        * @return string The body of the response. Empty string if no body or incorrect parameter given.
        */
       function wp_remote_retrieve_body(&$response) {
       	if ( is_wp_error($response) || ! isset($response['body']) )
       		return '';
   
       	return $response['body'];
       }
       function request( $url, $args = array() ) {
       		global $wp_version;
   
       		$defaults = array(
       			'method' => 'GET',
       			'timeout' => apply_filters( 'http_request_timeout', 30),
       			'redirection' => apply_filters( 'http_request_redirection_count', 5),
       			'httpversion' => apply_filters( 'http_request_version', '1.0'),
       			'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )  ),
       			'blocking' => true,
       			'headers' => array(),
       			'cookies' => array(),
       			'body' => null,
       			'compress' => false,
       			'decompress' => true,
       			'sslverify' => true
       		);
   
       		$r = wp_parse_args( $args, $defaults );
       		$r = apply_filters( 'http_request_args', $r, $url );
   
       		// Allow plugins to short-circuit the request
       		$pre = apply_filters( 'pre_http_request', false, $r, $url );
       		if ( false !== $pre )
       			return $pre;
   
       		$arrURL = parse_url($url);
   
       		if ( $this->block_request( $url ) )
       			return new WP_Error('http_request_failed', __('User has blocked requests through HTTP.'));
       ?>
       ```
   
 * Thanks once again for your help
 *  [Samuel B](https://wordpress.org/support/users/samboll/)
 * (@samboll)
 * [15 years, 10 months ago](https://wordpress.org/support/topic/unexpected-http-error-1/#post-1619761)
 * looks ok to me
    let me do some testing today
 *  [jjm0109](https://wordpress.org/support/users/jjm0109/)
 * (@jjm0109)
 * [15 years, 7 months ago](https://wordpress.org/support/topic/unexpected-http-error-1/#post-1620119)
 * Hey, it seems you are using WP 3.0+
    The 2.9 and before versions and http.php
   with complete code. The new one’s broken into another file called class-http.
   php in the same folder, search the code over there, you’ll find it.
 * Cheers!

Viewing 4 replies - 1 through 4 (of 4 total)

The topic ‘Unexpected HTTP Error’ is closed to new replies.

 * In: [Fixing WordPress](https://wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 4 replies
 * 3 participants
 * Last reply from: [jjm0109](https://wordpress.org/support/users/jjm0109/)
 * Last activity: [15 years, 7 months ago](https://wordpress.org/support/topic/unexpected-http-error-1/#post-1620119)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
