描述
还有几个API函数可用于不同的HTTP方法:
- wp_remote_get() 默认“GET”
- wp_remote_post() 默认“POST”
- wp_remote_head() 默认“HEAD”
- 更多信息请查阅:插件开发手册 - HTTP API
另见
- 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响应消息。
- 'code'
- 'cookies'
(WP_HTTP_Cookie[]) 响应的cookie数组。 - 'http_response'
(WP_HTTP_Requests_Response|null) 原始HTTP响应对象。
源码
更新日志
版本 | 描述 |
---|---|
2.7.0 | 开始引入 |
使用示例
使用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 */
您可以在
wp_remote_request()
中插入DELETE方法,如下所示:$url = 'http://wordpress.org'; $args = array( 'method' => 'DELETE' ); $response = wp_remote_request( $url, $args );
使用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; }