In the modern web “means 2.0”, Web applications communicate with each other to gather and share data in between .Your wordpress blog is no exception that’s why wordpress implemented a smart and powerful class WP_Http
since version 2.7.0 .This class supports all methods you need to use.
Make Your First Request
You can make HTTP request within wordpress by using one of these functions .
wp_remote_get($url, $args)
: Perform request with GET methodwp_remote_post($url, $args)
: Perform request with POST methodwp_remote_head($url, $args)
: Perform request HEAD methodwp_remote_request($url, $args)
: Perform request and take method as argument
As you see ,the first parameter is string representing a valid site URL and second parameter is an optional array of parameters to override the defaults .the syntax of these functions as follow .
var_dump(wp_remote_get('http://wordpress.org'));
var_dump(wp_remote_post('http://wordpress.org'));
var_dump(wp_remote_head('http://wordpress.org'));
//same requests but with different method
var_dump(wp_remote_request('http://wordpress.org'),array('method'=>'GET'));
var_dump(wp_remote_request('http://wordpress.org'),array('method'=>'POST'));
var_dump(wp_remote_request('http://wordpress.org'),array('method'=>'HEAD'));
The default parameters are the following array .
$defaults = array(
'method' => 'GET',
'timeout' => 5,
'redirection' => 5,
'httpversion' => '1.0',
'user-agent' => 'WordPress/version;URL',
'reject_unsafe_urls' => false,
'blocking' => true,
'headers' => array(),
'cookies' => array(),
'body' => null,
'compress' => false,
'decompress' => true,
'sslverify' => true,
'stream' => false,
'filename' => null,
'limit_response_size' => null,
);
These functions return an array of response data if the request succeed and a WP_Error
object on failure .you can test the response using is_wp_error
.consider the following example
$response= wp_remote_get('http://dsc');
if(is_wp_error($response)){
echo 'Error Found ( '.$response->get_error_message().' )';
}
Other Useful Functions
Actually wordpress like paradise for developers .along with functions that perform HTTP requests ,you can use following functions to quickly access parts of returned array .
wp_remote_retrieve_body($response)
: Returns body of the response .wp_remote_retrieve_header($response, $header)
: Returns just one particular header from server response .wp_remote_retrieve_response_code($response)
: Returns just the response code for example 200 (List of response codes) .wp_remote_retrieve_response_message($response)
: Returns just response message for example ok .wp_remote_retrieve_headers($response)
: Returns all headers from server response .
For example if you like to check if a link exists and don’t return a 404 message .
function CheckURL($url){
$response = wp_remote_get($url);
if(is_wp_error($response))
//request can't performed
return 1;
if(wp_remote_retrieve_response_code($response) == '404')
//request succeed and link not found
return 2;
//request succeed and link exist
return 3;
}