在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 各种应用乱码问题的解决方法
May 09 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
6个超实用的PHP代码片段
Aug 10 PHP
php获取图片信息的方法详解
Dec 10 PHP
PHP面向对象程序设计实例分析
Jan 26 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
PHP简单遍历对象示例
Sep 28 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
php桥接模式应用案例分析
Oct 23 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+mysql分页代码详解
2008/03/27 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
php实现encode64编码类实例
2015/03/24 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
PHP会话处理的10个函数
2015/08/11 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
python与C互相调用的方法详解
2017/07/14 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
销售代表求职自荐信
2013/10/01 职场文书
大学生职业生涯规划方案
2014/01/03 职场文书
二年级语文教学反思
2014/02/02 职场文书
感恩教育活动总结
2014/05/05 职场文书
锦旗标语大全
2014/06/23 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
招商银行工作证明
2015/06/17 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技