在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 简易输出CSV表格文件的方法详解
Jun 20 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
Mar 18 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
深入解析PHP底层机制及相关原理
Dec 11 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
微信支付开发交易通知实例
2016/07/12 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
python开发利器之ulipad的使用实践
2017/03/16 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
python去除字符串中的换行符
2017/10/11 Python
python连接数据库的方法
2017/10/19 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
园艺师求职信
2014/03/10 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
班级联欢会主持词
2015/07/03 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python