HTTP请求

WordPress 发送 HTTP 请求的两种方式:

  1. 使用 WordPress 自带的 HTTP API (推荐)
$response = wp_remote_get( 'https://api.github.com/users/wordpress' );
$body     = wp_remote_retrieve_body( $response );
  1. 使用 PHP 原生的 cURL (不推荐)

下面针对这两种方式分别进行讲解:

方式一:使用 WordPress 自带的 HTTP API

WordPress 自带的 HTTP API 封装了许多底层的操作,使得发送 HTTP 请求变得相对简单。下面是使用这种方式的示例代码:

// 使用 wp_remote_get 发送 GET 请求
$response = wp_remote_get( 'http://example.com/api/data' );

// 判断请求是否成功,并输出响应结果
if ( is_array( $response ) && ! is_wp_error( $response ) ) {
    $body = $response['body'];
    echo $body;
} else {
    echo '请求失败!';
}

代码解释:

  • 使用 wp_remote_get 函数发送 GET 请求。wp_remote_get 函数会返回一个数组类型的数据,包含响应内容、响应头信息、HTTP 状态码等等。
  • 使用 is_array 判断返回的结果是否为数组类型。如果不是,说明请求失败。
  • 使用 is_wp_error 判断返回的结果是否为 WP_Error 类型。如果是,说明请求失败。
  • 通过访问 $response 数组中的 body 元素来获取响应内容。

除了 wp_remote_get 之外,HTTP API 还提供了 wp_remote_postwp_remote_headwp_remote_request 等函数,用于发送 POST 请求、HEAD 请求以及自定义请求。这些函数所需参数及返回值都可以在官方文档中找到,这里就不再赘述。

方式二:使用 PHP 原生的 cURL

如果你比较熟悉 PHP 原生的网络操作,也可以使用 cURL 来发送 HTTP 请求。下面是一份示例代码:

// 初始化 cURL
$ch = curl_init();

// 设置 cURL 请求选项
curl_setopt( $ch, CURLOPT_URL, 'http://example.com/api/data' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

// 执行请求并获取响应数据
$response = curl_exec( $ch );

// 关闭 cURL
curl_close( $ch );

// 输出响应内容
echo $response;

代码解释:

  • 使用 curl_init 初始化一个 cURL 会话。
  • 使用 curl_setopt 设置 cURL 请求选项。其中 CURLOPT_URL 指定请求的 URL 地址,CURLOPT_RETURNTRANSFER 指定将响应结果作为字符串返回,而不是直接输出到 STDOUT。
  • 使用 curl_exec 执行 cURL 请求,并获取响应结果。
  • 使用 curl_close 关闭 cURL 会话。
  • 使用 echo 输出响应结果。

推荐使用第一种方式发送 HTTP 请求,因为使用 HTTP API 可以使代码更加简洁、易读,也可以方便地处理异常情况。不过如果有特殊的需求,使用 cURL 也是一种不错的选择。

函数参考