Function of HTTP in WordPress

Function of HTTP in WordPress में WP_Http नाम की एक Class को wp-includes/class-http.php File में Implement किया गया है। यही Class पिछले Section में Described विभिन्न तरीकों को Current Web Server पर Existence के लिए Check करता है और जो तरीका Perfect रूप में उपलब्ध होता है, उसे उपयोग में लेते हुए WordPress, HTTP Request Send करता है।

WordPress का HTTP API सभी प्रकार के GET, POST व HEAD Methods को Support करता है। इसलिए जब हम WordPress में HTTP Request Perform करना चाहते हैं, तब हमें कभी भी Core PHP के तरीकों को Use नहीं करना चाहिए, बल्कि WordPress HTTP API को ही उपयोग में लेना चाहिए जो कि ज्यादा बेहतर तरीके से HTTP Request को Handle करने में सक्षम है।

wp_remote_ Functions

WordPress हमें तीन API Functions Provide करता है, जिनके माध्‍यम से हम WordPress Environment द्वारा wp_remote_get(), wp_remote_post()wp_remote_head() API Functions के माध्‍यम से GET, POSTHEAD Requests को Handle कर सकते हैं। ये सभी Functions समान तरीके से Operate होते हैं। यानी%

  • HTTP Requests को Specific Function द्वारा Perform किया जाता है।
  • ये सभी API Functions एक Optional व एक Required यानी कुल दो Parameters Accept करते हैं।
  • ये सभी API Functions एक Object या Array Return करते हैं।

इन तीनों ही Functions का Syntax निम्नानुसार होता है:

$get_result = wp_remote_get( $url, $args );
$post_result = wp_remote_post($url, $args );
$head_result = wp_remote_head($url, $args );

जबकि इन तीनों ही API Functions के एक Single Shortcut Function के रूप में हम wp_remote_request() API Function को Use कर सकते हैं, जो कि उपरोक्त तीनों API Functions के Equivalent काम करता है। जैसे:

$get_result = wp_remote_request( $url, array( ‘method’ = > ‘GET’ ) );
$post_result = wp_remote_request( $url, array( ‘method’ = > ‘POST’ ) );
$head_result = wp_remote_request( $url, array( ‘method’ = > ‘HEAD’ ) );

wp_remote_request() API Function Exactly अन्‍य wp_remote_* API Functions के समान ही काम करता है, इसलिए जो Rules अन्‍य wp_remote_* API Functions पर Apply होते हैं, वे सभी इस API Function पर भी समान रूप से Apply होते हैं।

wp_remote_* Input Parameters

इन सभी API Functions का पहला Parameter $url होता है, जो कि एक String Representation के रूप में उस URL को Represent करता है, जिस पर HTTP Request को Send किया जाना होता है। इस Parameter के रूप में HTTPHTTPS Protocols Supported होते हैं।

दूसरे Parameter के रूप में $args एक Option Array को Represent करता है, जिसे इन API Functions की Default Values को Override करने के लिए Use किया जा सकता है। इस Array की विभिन्न Default Values निम्नानुसार होती हैं:

$defaults = array (
	'method' => 'GET',
	'timeout' => 5,
	'redirection' => 5,
	'httpversion' => '1.0',
	'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
	'blocking' => true,
	'headers' => array (),
	'cookies' => array (),
	'body' => NULL,
	'compress' => false,
	'decompress'=> true,
	'sslverify' => true,
)

जब हम wp_remote_*() API Functions को Use करते समय दूसरे Parameter के रूप में कोई मान Specify नहीं करते, तब Default रूप से Use होने वाले सभी मान उपरोक्तानुसार होते हैं। जबकि किसी Specific Value को Modify करने के लिए इस $args को हम निम्नानुसार तरीके से Modify कर सकते हैं:

$args = array(user-agent => Mozilla/5.0 (Windows NT 5.1; en-US) Firefox/3.6.8,);
$result = wp_remote_get( $url, $args );

हम समझ सकते हैं कि इस प्रकार से Modify किए गए User-Agent String को यदि हम $_SERVER[‘HTTP_USER_AGET’] Statement द्वारा Retrieve करते हैं, तो हमें प्राप्त होने वाली Information गलत हो सकती है क्योंकि उपरोक्तानुसार Statement का प्रयोग करते हुए $args Argument के “user-agent” Key को हम हमारी इच्छानुसार Modify कर सकते हैं।

इस Argument की सबसे ज्यादा महत्वपूर्ण Default Values को हम निम्नानुसार Describe कर सकते हैं, जबकि इनके अलावा अन्‍य Optional Parameters इतने ज्यादा महत्वपूर्ण नहीं होते कि उन्हें Modify किया जाए:

Parameter Description
method इस Parameter को Specify करके हम इस बात को तय करते हैं कि हमारा HTTP Request Perform होते समय GET, POST या HEAD में से किस Method को Use करते हुए Perform होगा।
timeout जब Request Perform होते समय किसी कारणवश कोई Response Generate नहीं होताए तब अधिकतम कितने Seconds तक Connection Establish होने के लिए Wait किया जाना चाहिए, इस बात को इस Parameter के रूप में Seconds की तरह Specify किया जाना होता है।
user-agent इस Parameter में हम इस बात को Specify करते हैं कि यदि $_SERVER Global Variable के user-agent को Access किया जाए, तो क्‍या Information Retrieve होना चाहिए।
headers अलग प्रकार की जरूरत होने पर Specify किए जाने वाले Additional Headers के Array को इस Parameter के रूप में Specify किया जा सकता है।
cookies इस Parameter के रूप में Cookie का एक Array Specify किया जा सकता है, जो कि Web Server पर Pass किया जाना होता है।
body इस Parameter के रूप में हम String या Array की तरह Request की Body को Specify करते हैं, जो कि वह Data होता है जिसे पहले Parameter के रूप में Specify किए गए URL पर Send किया जाना होता है।

wp_remote_* Return Values

Successful होने पर सभी wp_remote_*() AIP Functions एक Array Return करते हैं जबकि यदि किसी वजह से HTTP Request Fail हो जाए तो उस स्थिति में एक WP_Error Object Return होता है। जैसे:

    var_dump( wp_remote_get( malformed-url ) );

हम समझ सकते हैं कि इस Statement में Specified wp_remote_get() API Function में Specified URL एक गलत URL है, जिसके परिणामस्वरूप Request Fail ही होगा और निम्नानुसार एक Error Object ही Return होगा-

WP_Error::__set_state(array(
   'errors' => array (  'http_request_failed' => array ( 0 => 'A valid URL was not provided.', ),),
   'error_data' => array (  ),
))

इस Return होने वाले WP_Error Object में हम देख सकते हैं कि http_request_failed नाम के Key के साथ एक Error Information Array Return हो रहा है, जो ये Information दे रहा है कि Specified URL एक Invalid URL होने की वजह से ये Request Fail हो रहा है।

इसी प्रकार से अलग-अलग तरह की Errors के कारण wp_remote_*() API Functions के Fail होने के साथ ही Return होने वाला Error Message भी अलग-अलग ही होता है। जैसे:

	echo '<pre>';
	$bad_urls = array('malformed','http://0.0.0.0/', 'irc://example.com/', 'http://inexistant',);
	foreach( $bad_urls as $bad_url ) {
		$response = wp_remote_head( $bad_url, array('timeout'=> 1) );
		if( is_wp_error( $response ) ) {
			$error = $response-> get_error_message();
			echo "<p> $bad_url returned: <br> $error </p>";
		}
	}
	echo '</pre>';

जब WordPress Environment में ये Code Execute होता है, तो हमें निम्नानुसार चारों URLs के लिए चार अलग तरह के Error Messages प्राप्त होते हैं, क्योंकि हम जानते हैं कि चारों ही URLs किसी न किसी तरह से गलत हैं:

malformed returned:
A valid URL was not provided.

http://0.0.0.0/ returned:
Could not open handle for fopen() to http://0.0.0.0/

irc://example.com/ returned:
A valid URL was not provided.

http://inexistant returned:
Could not open handle for fopen() to http://inexistant

यानी हम समझ सकते हैं कि ये API Function अलग-अलग तरह की Errors को Diagnose कर सकता है, इसलिए विभिन्न प्रकार की Remote HTTP Requests के लिए हम WordPress के HTTP API को Confidence के साथ Use कर सकते हैं व जरूरत होने पर किसी Unexpected Behavior को Handle करने के लिए Appropriate Codes लिख सकते हैं।

जिस तरह से हम Errors की स्थिति को WP_Error Object द्वारा Handle कर सकते हैं, उसी तरह से इन API Functions के Successful होने पर भी ये API Functions एक Multidimensional Array Return करता है, जिसमें 4 Elements होते हैं, जो Row Server Response को चार Parts में Headers, Body, Response Cookies के रूप में Represent कर सकते हैं। जैसे:

	echo '<pre>';
	var_dump( wp_remote_get( 'https://www.bccfalna.com/' ) );
	echo '</pre>';

ये Code Execute होने पर हमें निम्नानुसार Output प्राप्त होता है:

array(4) {
	["headers"] => array(5) {
		["date"] => string(29) "Wed, 01 Sep 2010 14:39:21 GMT"
		["server"] => string(85) "Apache/2.2.8 mod_ssl/2.2.8 PHP/5.2.5"
		["content-length"] => string(3) "461"
		["connection"] => string(5) "close"
		["content-type"] => string(25) "text/html; charset=utf-8"
	}
	["body"]=> string(461) " <html> <head>
	<title> 404 Not Found </title>
	</head> <body>
	(... snip ...)
	</body> </html>
	"
	["response"] => array(2) {
		["code"] => int(404)
		["message"] => string(9) "Not Found"
	}
	["cookies"] => array(0) {}
}

इस Output द्वारा जो सबसे पहली बात हम समझ सकते हैं वो ये है कि जब हम किसी Non-Existing URL को Specify करते हैं, तो भी HTTP Request Successful Consider होता है। ऐसा इसलिए होता है क्योंकि जब भी कभी Web Server, Client को Response Return करता है, वह Response, HTTP Transaction के Completion को ही Represent करता है। साथ ही इस Output में हमें निम्नानुसार चार Response Arrays भी प्राप्त होते हैं:

  • headers – इस Array के अन्तर्गत Return होने वाले Response से सम्बंधित विभिन्न HTTP Response Headers की Information होती है, लेकिन Status Code नहीं होता।
  • body – इस Array के अन्तर्गत Server Response होता है, जो कि सामान्‍यत: HTML Page का Content होता है लेकिन जब हम Remote API जैसी किसी Service को Use करते हैं, तब इसके अन्तर्गत JSON या XML Encoded Data भी हो सकता है।
  • response – इस Array के अन्तर्गत Server Response Code व उसका Description होता है। ये Information इसलिए भी उपयोगी होती है, क्योंकि इसी Information से हमें पता चलता है कि हमारा HTTP Transaction Successful रहा या नहीं।
  • cookies – इस Array के अन्तर्गत वह Cookies Information होती है, जिसे Server द्वारा Clients को Store करने के लिए Send किया जाता है। इस Information की जरूरत हमें किसी अन्‍य HTTP Request में हो सकती है। इन Information को सामान्‍यत: wp_remote_* Function Calls में Optional Parameters के रूप में Pass किया जाता है।

wp_remote_ Functions जो Array Return करते हैं, उनमें बहुत सारी उपयोगी जानकारियों Exist होती हैं। इसलिए विभिन्न प्रकार की जरूरतों को पूरा करने के लिए WordPress हमें कई अन्‍य Supporting API Functions Provide करता है, जिनका प्रयोग करके हम इन Functions से Return होने वाले Arrays को जरूरत के अनुसार Access करते हुए विभिन्न प्रकार के Data को Retrieve कर सकते हैं।

wp_remote_retrieve_response_code() API Function

ये API Function किसी HTTP Response Object का Response Status Code Return करता है। जैसे 200 Code Successful Response को Represent करता है।

wp_remote_retrieve_response_message() API Function

ये API Function किसी HTTP Response Object का Response Message Return करता है। जैसे 200 Code Successful Response होने पर Response Message “OK” होता है।

wp_remote_retrieve_response_body() API Function

ये API Function किसी HTTP Response Object का Response Body Content Return करता है।

wp_remote_retrieve_response_headers() API Function

ये API Function किसी HTTP Response Object का Response के विभिन्न Header Information Contents को Return करता है।

wp_remote_retrieve_response_header() API Function

ये API Function किसी HTTP Response Object का Response के विभिन्न Header Information Contents में से किसी एक Header Information को Return करता है।

उदाहरण के लिए यदि हमें किसी Particular Link के Exist होने के लिए 404 Error हेतु उसे Check करना हो, तो इस जरूरत को पूरा करने के लिए हम इन Supporting API Functions को जरूरत के अनुसार निम्नानुसार Use कर सकते हैं:

$url = 'https://www.bccfalna.com/register';

// Send GET request
$response = wp_remote_get( $url );

// Check for server response
if( is_wp_error( $response ) ) {
	$code = $response-> get_error_message();
	wp_die( 'Requests could not execute. Error was: ' . $code );
}

// Check that the server sent a “404 Not Found” HTTP status code
if( wp_remote_retrieve_response_code( $response ) == 404 ) {
	wp_die( 'Link not found' );
}

// So far, so good
echo 'Link found';

WordPress in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Advance WordPress in Hindi | Page: 835 | Format: PDF

BUY NOW GET DEMO REVIEWS