在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 实现多服务器共享 SESSION 数据
Aug 15 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
php静态文件生成类实例分析
Jan 03 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
windows系统php环境安装swoole具体步骤
Mar 04 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
第四章 php数学运算
2011/12/30 PHP
smarty简单应用实例
2015/11/03 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python 3中的yield from语法详解
2017/01/18 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
python 爬虫请求模块requests详解
2020/12/04 Python
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
开平碉楼导游词
2015/02/06 职场文书
2016新年慰问信范文
2015/03/25 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
开票证明
2015/06/23 职场文书
56句经典英文座右铭
2019/08/09 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android