wordpress中引用系统类库发送网络请求

作者: shaneZhang 分类: 互联网技术 发布时间: 2017-12-24 13:09

 WordPress 2.7开始引入了一个新的PHP Class:WP_Http(在wp-includes目录http.php文件中)。这个Class的强大之处是它会检测服务器的情况,选择最好的方法去实现HTTP请求,所以我们自己无须去检测HTTP扩展,fopen(),是否存在curl_init()函数,这个Class都会包办这些检测。

基本用法


$request = new WP_Http;
$result = $request->request( 'https://zhangyuqing.cn/' );
返回的变量$result是一个数组,它包含以下东西:
'headers: 返回的 headers 数组,如 “x-powered-by” => “PHP/5.2.1″
'body': 返回字符串,和你使用浏览器看到一样的。
'response': 返回代码的数组,如果获取了这个代码 (‘code’=>200, ‘message’=>’OK’),说明你的 HTTP Request 成功了。
'cookies': 返回 cookie 信息数组。

简单的Get请求


$url = 'http://your.api.url/?q=abc';
$request = new WP_Http;
$result = $request->request( $url );
$json = $result['body'];

简单的Post请求


$body = array(
   'aaa' => 'cccc',
   'bbb' => 'dddd'
);
$url = 'http://your.api.url/';
$request = new WP_Http;
$result = $request->request( $url, array( 'method' => 'POST', 'body' => $body) );
// test $result['response'] and if OK do something with $result['body']

带有http认证的post请求


$username = 'aaaaa'; // login
$password = '123456'; // password
$message = "I'm posting with the API";
// Now, the HTTP request:
$api_url = 'http://your.api.url/update.xml';
$body = array( 'status' => $message );
$headers = array( 'Authorization' => 'Basic '.base64_encode("$username:$password") );
$request = new WP_Http;
$result = $request->request( $api_url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers ) );

How To Make HTTP Requests with WordPress

如果觉得我的文章对您有用,请随意打赏。如果有其他问题请联系博主QQ(909491009)或者下方留言!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注