wp_remote_retrieve_response_message()
云策文档标注
概述
wp_remote_retrieve_response_message() 函数用于从 HTTP 响应中提取响应消息。它处理 WP_Error 或无效参数,返回空字符串作为错误处理。
关键要点
- 函数从原始响应中检索响应消息,适用于 WordPress HTTP API 调用后的错误处理。
- 参数 $response 必须是数组或 WP_Error,否则返回空字符串。
- 内部检查 is_wp_error() 和响应结构,确保安全访问 $response['response']['message']。
- 常用于结合 wp_remote_retrieve_response_code() 进行完整的 HTTP 响应分析。
代码示例
function wcpdx_get_movie( $title, $id = 0 ) {
// 构建请求参数和 URL
$params = array(
'i' => absint( $id ),
't' => sanitize_text_field( $title )
);
$url = 'http://www.imdbapi.com/';
$url = add_query_arg( $params, esc_url_raw( $url ) );
// 发送 HTTP 请求
$response = wp_remote_get( esc_url_raw( $url ) );
// 使用 wp_remote_retrieve_response_message() 获取响应消息
$response_code = wp_remote_retrieve_response_code( $response );
$response_message = wp_remote_retrieve_response_message( $response );
// 错误处理:基于响应码和消息返回 WP_Error 或成功数据
if ( 200 != $response_code && ! empty( $response_message ) ) {
return new WP_Error( $response_code, $response_message );
} elseif ( 200 != $response_code ) {
return new WP_Error( $response_code, 'Unknown error occurred' );
} else {
return wp_remote_retrieve_body( $response );
}
}注意事项
- 确保 $response 参数来自 wp_remote_get() 或类似函数,否则可能无法正确解析。
- 在调用前检查响应是否为 WP_Error,函数内部已处理但外部验证可增强健壮性。
- 响应消息通常用于调试,结合响应码提供更详细的错误信息。
原文内容
Retrieves only the response message from the raw response.
Description
Will return an empty string if incorrect parameter value is given.
Parameters
$responsearray|WP_Errorrequired-
HTTP response.
Source
function wp_remote_retrieve_response_message( $response ) {
if ( is_wp_error( $response ) || ! isset( $response['response'] ) || ! is_array( $response['response'] ) ) {
return '';
}
return $response['response']['message'];
}
Changelog
| Version | Description |
|---|---|
| 2.7.0 | Introduced. |
Skip to note 2 content
Drew Jaynes
Make Request and Display Error
/** * Get movie information from IMDB. * * @param string $title Title of the movie * @param int $id IMDB ID of the movie * @return string|WP_Error Returns the contents of the response on success, WP_Error on failure */ function wcpdx_get_movie( $title, $id = 0 ) { // Collect the args $params = array( 'i' => absint( $id ), 't' => sanitize_text_field( $title ) ); // Generate the URL $url = 'http://www.imdbapi.com/'; $url = add_query_arg( $params, esc_url_raw( $url ) ); // Make API request $response = wp_remote_get( esc_url_raw( $url ) ); // Check the response code $response_code = wp_remote_retrieve_response_code( $response ); $response_message = wp_remote_retrieve_response_message( $response ); if ( 200 != $response_code && ! empty( $response_message ) ) { return new WP_Error( $response_code, $response_message ); } elseif ( 200 != $response_code ) { return new WP_Error( $response_code, 'Unknown error occurred' ); } else { return wp_remote_retrieve_body( $response ); } } // Make request $movie = 'Hairspray'; $response = wcpdx_get_movie( $movie ); // Print error if error, otherwise print information if ( is_wp_error( $response ) ) { echo 'The following error occurred when contacting IMDB: ' . wp_strip_all_tags( $response->get_error_message() ); } else { $data = json_decode( $response ); echo 'The movie ' . esc_html( $data['Title'] ) . ' was released in ' . absint( $data['Year'] ) . '.'; }