在WordPress中实现发送http请求的相关函数解析


Posted in PHP onDecember 29, 2015

在 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 = new WP_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 = new WP_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,详细如下:

// You would edit the following:
$username = 'denishua'; // 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 ) );

WordPress 加入 WP_Http 类之后,就放弃了 Snoopy 这个 PHP Class,所以建议大家给 WordPress 写插件的时候,尽量使用 WP_Http 来做 HTTP 请求。

PHP 相关文章推荐
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
PHP执行速率优化技巧小结
Mar 15 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
深入PHP magic quotes的详解
Jun 17 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
利用php输出不同的心形图案
Apr 22 PHP
nginx下安装php7+php5
Jul 31 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 #PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
Dec 29 #PHP
Yii使用技巧大汇总
Dec 29 #PHP
PHP实现批量上传单个文件
Dec 29 #PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 #PHP
PHP远程调试之XDEBUG
Dec 29 #PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 #PHP
You might like
ThinkPHP模板中数组循环实例
2014/10/30 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
javascript Keycode对照表
2009/10/24 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
推荐11个实用Python库
2015/01/23 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
python计算二维矩形IOU实例
2020/01/18 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
体育学院毕业生自荐信
2013/11/03 职场文书
建筑工地质量标语
2014/06/12 职场文书
工资收入证明
2014/10/07 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
《失物招领》教学反思
2016/02/20 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
Kubernetes控制节点的部署
2022/04/01 Servers
python单向链表实例详解
2022/05/25 Python