程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 在WordPress中實現發送http請求的相關函數解析

在WordPress中實現發送http請求的相關函數解析

編輯:PHP綜合

在 PHP 中發送 Http 請求(GET / POST)有很多的方法,比如 file_get_contents() 函數、fopen() 函數或者 cURL 擴展,但由於服務器的情況不同,所以不一定會兼容所有情況,這樣想要發送 Http 請求則需要經過一系列的判斷,非常麻煩。

不過 WordPress 提供了一個 WP_Http 的類來幫你做好兼容性的判斷,你只需要調用裡邊的函數就能完成發送 Http 請求。下面我就簡單的介紹一下這個類的常用函數。

發送 GET 請求

/**
 *使用 WP_Http 類發送簡單的 GET 請求
 *http://www.endskin.com/wp_http/
*/
$http = new WP_Http;
$result = $http->request( 'http://www.endskin.com' );

上邊的代碼就把請求目標的信息存儲到 $result 變量裡了,$result 是一個數組,它有一下的鍵:

  • headers:返回的 headers 信息,是一個數組
  • body:目標的內容,和在浏覽器裡直接看是一樣的
  • response:返回的代碼,如果請求成功會返回 array( 'code'=>200, 'message'=>'OK' )
  • cookies:Cookie 信息,是一個數組

也就是說目標的內容就是 $result['body']

發送 POST 請求

如果需要發送 POST 請求就得用到 WP_Http->request() 的第二個參數了,下面看例子:

/**
 *使用 WP_Http 類發送簡單的 POST 請求
 *http://www.endskin.com/wp_http/
*/
$http = new WP_Http;
$post = array( 'name' => '斌果', 'blog' => 'http://www.bgbk.org' );
$result = $http->request( 'http://www.endskin.com', array( 'method' => 'POST', 'body' => $post ) );

返回的$result 變量內容請參考上邊的 GET 請求。

需要驗證的 POST 請求

假如你想在一些 RESTFul 的 API 提交一些信息,你首先需要進行驗證,我們需要發送一個含有用戶名和密碼對的 base64 編碼的字符串給 API,詳細如下:

// You would edit the following:
$username = 'denishua'; // login
$password = '123456'; // password
$message = "I'm posting with the API";
// Now, the HTTP request:
$api_url = 'http://your.api.url/update.xml';
$body = array( 'status' => $message );
$headers = array( 'Authorization' => 'Basic '.base64_encode("$username:$password") );
$request = new WP_Http;
$result = $request->request( $api_url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers ) );

WordPress 加入 WP_Http 類之後,就放棄了 Snoopy 這個 PHP Class,所以建議大家給 WordPress 寫插件的時候,盡量使用 WP_Http 來做 HTTP 請求。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved