在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 5.0对象模型深度探索之对象复制
Mar 27 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
php生成xml简单实例代码
Dec 16 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
Laravel find in set排序实例
Oct 09 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
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
JavaScript 继承详解(三)
2009/07/13 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
python使用knn实现特征向量分类
2018/12/26 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
汉语专业应届生求职信
2013/10/01 职场文书
党员教师工作决心书
2014/03/13 职场文书
六年级学生评语
2014/04/22 职场文书
献爱心活动总结
2014/05/07 职场文书
服装设计师求职信
2014/06/04 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
大学生自荐信范文
2015/03/05 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android