在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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
PHP 字符串 小常识
Jun 05 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
PHP return语句的另一个作用
Jul 30 PHP
PHP中的闭包(匿名函数)浅析
Feb 07 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
PHP 无限级分类
May 04 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP count_chars()函数讲解
Feb 14 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
PHP5 安装方法
2007/01/15 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
Python字符串详细介绍
2015/05/09 Python
编写Python CGI脚本的教程
2015/06/29 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
JPA的特点
2014/10/25 面试题
销售实习自我鉴定
2013/12/07 职场文书
给导游的表扬信
2014/01/10 职场文书
介绍信怎么写
2015/05/05 职场文书
科技活动总结范文
2015/05/11 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
详解MySQL的半同步
2021/04/22 MySQL
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python