在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来写记数器(详细介绍)
Oct 09 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
php格式文件打开的四种方法
Feb 24 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
php源码的使用方法讲解
Sep 26 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
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Javascript Global对象
2009/08/13 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
详解Python中DOM方法的动态性
2015/04/11 Python
python 调试冷知识(小结)
2019/11/11 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
Python远程方法调用实现过程解析
2020/07/28 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
社团活动总结报告
2014/06/27 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
用电申请报告范文
2015/05/18 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
如何使用flask将模型部署为服务
2021/05/13 Python
Python超详细分步解析随机漫步
2022/03/17 Python
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers