在WordPress中实现发送http请求的相关函数解析
在PHP中发送Http请求(GET/POST)有很多的方法,比如file_get_contents()函数、fopen()函数或者cURL扩展,但由于服务器的情况不同,所以不一定会兼容所有情况,这样想要发送Http请求则需要经过一系列的判断,非常麻烦。
不过WordPress提供了一个WP_Http的类来帮你做好兼容性的判断,你只需要调用里边的函数就能完成发送Http请求。下面我就简单的介绍一下这个类的常用函数。
发送GET请求
/** *使用WP_Http类发送简单的GET请求 *http://www.endskin.com/wp_http/ */ $http=newWP_Http; $result=$http->request('http://www.endskin.com');
上边的代码就把请求目标的信息存储到$result变量里了,$result是一个数组,它有一下的键:
- headers:返回的headers信息,是一个数组
- body:目标的内容,和在浏览器里直接看是一样的
- response:返回的代码,如果请求成功会返回array('code'=>200,'message'=>'OK')
- cookies:Cookie信息,是一个数组
也就是说目标的内容就是$result['body']
发送POST请求
如果需要发送POST请求就得用到WP_Http->request()的第二个参数了,下面看例子:
/** *使用WP_Http类发送简单的POST请求 *http://www.endskin.com/wp_http/ */ $http=newWP_Http; $post=array('name'=>'斌果','blog'=>'http://www.bgbk.org'); $result=$http->request('http://www.endskin.com',array('method'=>'POST','body'=>$post));
返回的$result变量内容请参考上边的GET请求。
需要验证的POST请求
假如你想在一些RESTFul的API提交一些信息,你首先需要进行验证,我们需要发送一个含有用户名和密码对的base64编码的字符串给API,详细如下:
//Youwouldeditthefollowing: $username='denishua';//login $password='123456';//password $message="I'mpostingwiththeAPI"; //Now,theHTTPrequest: $api_url='http://your.api.url/update.xml'; $body=array('status'=>$message); $headers=array('Authorization'=>'Basic'.base64_encode("$username:$password")); $request=newWP_Http; $result=$request->request($api_url,array('method'=>'POST','body'=>$body,'headers'=>$headers));
WordPress加入WP_Http类之后,就放弃了Snoopy这个PHPClass,所以建议大家给WordPress写插件的时候,尽量使用WP_Http来做HTTP请求。