在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语法(3)
Oct 09 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
Laravel手动返回错误码示例
Oct 22 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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数据采集的详解
2013/06/02 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
JS继承 笔记
2011/07/13 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
深入解析Python中的WSGI接口
2015/05/11 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python优先队列实现方法示例
2017/09/21 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
python修改字典键(key)的方法
2019/08/05 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
美国宠物商店:Wag.com
2016/10/25 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
党校培训自我鉴定
2014/02/01 职场文书
十八大感想感言
2014/02/10 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
销售员岗位职责
2014/06/09 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
单位实习鉴定评语
2015/01/04 职场文书
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫