我在之前的文章中介紹了 WordPress 提供用於傳送 Http 請求的 WP_Http 類,但在實際使用過程中一般不需要直接呼叫類,而是使用 WordPress 幫我們封裝好的函式,可以讓程式碼變的更加簡潔。

傳送 GET 請求

傳送普通的 GET 請求直接用 wp_remote_get() 函式,下邊是一個簡單的例子:

1

$response=wp_remote_get('http://www.weixiaoduo.com');

如果要新增 GET 引數的話可以直接在請求的連結後邊新增查詢字串,或者使用 add_query_arg() 函式生成:

$response=wp_remote_get(add_query_arg('wd','搜尋關鍵詞','http://www.baidu.com/s'));

//新增多個引數

$response=wp_remote_get(add_query_arg(array(

    'wd'=>'搜尋關鍵詞',

    'ie'=>'utf-8'

),'http://www.baidu.com/s'));

傳送 POST 請求

傳送 POST 請求使用 wp_remote_post() 函式,例子:

//查詢引數

$args=array(

    'name'=>'斌果',

    'blog_url'=>'http://www.bgbk.org'

);

//傳送請求

$response=wp_remote_post('http://www.weixiaoduo.com',array('body'=>$args));

解析請求結果

在上邊的例子中,我都把請求的結果儲存在了 $response 變數裡,這個引數裡包含所有請求的資訊,那該如何從這個變數中找到我們要的資訊呢?需要使用幾個函式:

  • wp_remote_retrieve_response_code():獲取請求的 Http 狀態碼,請求成功則返回 200
  • wp_remote_retrieve_body():獲取請求的內容
  • wp_remote_retrieve_response_message():獲取請求結果的資訊
  • wp_remote_retrieve_header():獲取請求結果的頭資訊

另外值得一提的是,如果請求發生異常,會返回一個 WP_Error,裡邊包含錯誤資訊。

下邊是一個完整的請求:

//查詢引數

$args=array(

    'name'=>'斌果',

    'blog_url'=>'http://www.bgbk.org'

);

//傳送請求

$response=wp_remote_post('https://www.weixiaoduo.com/adfad',array('body'=>$args));

//判斷請求是否成功

if(is_wp_error($response)||wp_remote_retrieve_response_code($response)!==200)die('請求錯誤');

//獲取請求內容

$result=wp_remote_retrieve_body($response);

如果你想獲取請求的 header 頭資訊,可以參考下邊,下邊的例子獲取了 header 頭中的伺服器資訊:

1

$server=wp_remote_retrieve_header($response,'server');