wordpress中引用系统类库发送网络请求
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 ) );