函数文档

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.

Return

string The response message. Empty string if incorrect parameter given.

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.

User Contributed Notes

  1. Skip to note 2 content

    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'] ) . '.';
    }