当前浏览:首页 / WordPress函数 / wp_remote_request()

wp_remote_request( string $url, array $args = array() )

执行HTTP请求并返回其响应

remote 远程

request


描述

还有几个API函数可用于不同的HTTP方法:

另见

  • WP_Http::request():有关默认参数的信息。

参数

$url

(string)(必填) 要检索的URL。

$args

(array)(可选) 请求参数。

默认值: array()


返回

(array|WP_Error) 响应的数组,或失败时为WP_Error

  • 'headers'
    (string[]) 响应的headers数组,以名称作为key。
  • 'body'
    (string) 响应的body。
  • 'response'
    (array) 有关HTTP响应的数据。
    • 'code'
      (int|false) HTTP响应代码,状态码。
    • 'message'
      (string|false) HTTP响应消息。
  • 'cookies'
    (WP_HTTP_Cookie[]) 响应的cookie数组。
  • 'http_response'
    (WP_HTTP_Requests_Response|null) 原始HTTP响应对象。


源码

查看源码 官方文档


更新日志

版本描述
2.7.0开始引入

使用示例

  • 示例1

    使用wp_remote_post发送删除请求

    $response = wp_remote_request( 'http://www.example.com/index.php',
        array(
            'method'     => 'DELETE'
        )
    );
    
    $body = wp_remote_retrieve_body($response);
    echo $body;
    /* Prints response provided from the service provider. Most of the cases, it will be JSON  */
    
  • 示例2

    您可以在wp_remote_request()中插入DELETE方法,如下所示:

    $url = 'http://wordpress.org';
    $args = array(
    	'method' => 'DELETE'
    );
    $response = wp_remote_request( $url, $args );
    
  • 示例3

    使用wp_remote_request()调用ConvertKit API的函数示例

      private function call($args, $endpoint, $api_secret = null, $method = 'GET') {
        if(is_null($api_secret)) { $api_secret = $this->api_secret(); }
    
        //Populate the correct endpoint for the API request
        $url                = "https://api.convertkit.com/v3/{$endpoint}?api_secret={$api_secret}";
    
        //Allow 3rd parties to alter the $args
        $args               = apply_filters('convertkit-call-args', $args, $endpoint, $method);
    
        //Populate the args for use in the wp_remote_request call
        $wp_args            = array('body' => $args);
        $wp_args['method']  = $method;
        $wp_args['timeout'] = 30;
    
        //Make the call and store the response in $res
        $res = wp_remote_request($url, $wp_args);
    
        //Check for success
        if(!is_wp_error($res) && ($res['response']['code'] == 200 || $res['response']['code'] == 201)) {
          return $res['body'];
        }
        else {
          return false;
        }
      }

    调用这个函数怎么样?这里还有一个函数,可以更新联系人的电子邮件地址/名称

      public function update_subscriber($contact, $new_email = '') {
        $id = $this->get_subscriber_id_by_email($contact);
    
        if(!$id) { return; } //Nada found?
    
        $args = array(
          'email_address' => (!empty($new_email) && is_email($new_email))?$new_email:$contact->user_email,
          'first_name'    => (string)$contact->first_name
        );
    
        $resp_body = (array)json_decode($this->call($args, "subscribers/{$id}", null, 'PUT'));
    
        //don't really care what the response was at this point, maybe we'll update this later
        return true;
      }