HTTP请求
WordPress 发送 HTTP 请求的两种方式:
- 使用 WordPress 自带的 HTTP API (推荐)
$response = wp_remote_get( 'https://api.github.com/users/wordpress' );
$body = wp_remote_retrieve_body( $response );
- 使用 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_post
、wp_remote_head
、wp_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 也是一种不错的选择。
函数参考
-
wp_remote_get():使用 GET HTTP 方法检索 URL。
-
wp_remote_post():使用 POST HTTP 方法检索 URL。
-
wp_remote_head():使用 HEAD HTTP 方法检索 URL。
-
wp_remote_request():使用默认 GET 或您指定的自定义 HTTP 方法检索 URL。
-
wp_remote_retrieve_body()– 仅从响应中检索正文。
-
wp_remote_retrieve_header()– 从原始响应中按名称检索单个标头。
-
wp_remote_retrieve_headers()– 仅从原始响应中检索标头。
-
wp_remote_retrieve_response_code()– 检索 HTTP 响应的响应代码。这应该是 200,但在失败时可能是 4xx 甚至 3xx。
-
wp_remote_retrieve_response_message()– 仅从原始响应中检索响应消息。