在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 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
基于php权限分配的实现代码
Apr 28 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
分享一个php 的异常处理程序
Jun 22 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
May 11 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
PHP实现动态压缩js与css文件的方法
May 02 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
PHP设计聊天室步步通
2006/10/09 PHP
php 安全过滤函数代码
2011/05/07 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
python中from module import * 的一个坑
2014/07/20 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
九步学会Python装饰器
2015/05/09 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
python中Lambda表达式详解
2019/11/20 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
小学生演讲稿大全
2014/04/25 职场文书
妇女干部培训方案
2014/05/12 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
Python 阶乘详解
2021/10/05 Python