在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调用Oracle存储过程
Oct 09 PHP
php一句话cmdshell新型 (非一句话木马)
Apr 18 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
记录PHP错误日志 display_errors与log_errors的区别
Oct 09 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
PHP自毁程序(慎用)
Jul 09 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
PHP与以太坊交互详解
Aug 24 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 PHP
php生成短网址/短链接原理和用法实例分析
May 29 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执行速度全攻略(上)
2006/10/09 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
微信API接口大全
2015/04/15 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
网页javascript精华代码集
2007/01/24 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
关于vue.js组件数据流的问题
2017/07/26 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
Django的Modelforms用法简介
2019/07/27 Python
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
Python的两道面试题
2013/06/29 面试题
战友聚会邀请函
2014/01/18 职场文书
开学典礼致辞
2015/07/29 职场文书
教师节感想
2015/08/11 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android