typecho插件编写教程(六):调用接口


Posted in PHP onMay 28, 2015

此篇我们开始调用接口,我们在插件类中新定义一个方法,起名为send_post,在方法中我们通过系统配置获取接口调用地址。

百度给的例子中使用了php的CURL,更高级的使用方法可以学习PHP_cURL初始化和执行方法

下面我们结合一下百度站长提供的代码。

/**
   * 发送数据
   * @param $url 准备发送的url
   * @param $options 系统配置
   */
  public static function send_post($url, $options){
    //获取API
    $api = $options->plugin('BaiduSubmitTest')->api;

    //准备数据
    if( is_array($url) ){
      $urls = $url;
    }else{
      $urls = array($url);
    }

    $ch = curl_init();
    $options = array(
      CURLOPT_URL => $api,
      CURLOPT_POST => true,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POSTFIELDS => implode("\n", $urls),
      CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
    );
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);

    //记录日志
    file_put_contents('/tmp/send_log', date('H:i:s') . $result . "\n");
  }

由于我们还没有建立日志系统,所以我们将日志先写入文件,先看效果吧!

返回值:

{"remain":48,"success":1}

Good!看来没有什么问题!不过为了保险起见,我还是用typecho自带的http类重写了此方法。
public static function send_post($url, $options){
    //获取API
    $api = $options->plugin('BaiduSubmitTest')->api;

    //准备数据
    if( is_array($url) ){
      $urls = $url;
    }else{
      $urls = array($url);
    }

    //为了保证成功调用,老高先做了判断
    if (false == Typecho_Http_Client::get()) {
      throw new Typecho_Plugin_Exception(_t('对不起, 您的主机不支持 php-curl 扩展而且没有打开 allow_url_fopen 功能, 无法正常使用此功能'));
    }

    //发送请求
    $http = Typecho_Http_Client::get();
    $http->setData(implode("\n", $urls));
    $http->setHeader('Content-Type','text/plain');
    $result = $http->send($api);

    //记录日志
    file_put_contents('/tmp/send_log', date('H:i:s') . $result . "\n");
  }
}

现在我们的插件基本能够运行了,但是在结构上还可以进一步优化!

PHP 相关文章推荐
ZF等常用php框架中存在的问题
Jan 10 PHP
php session 检测和注销
Mar 16 PHP
10个实用的PHP代码片段
Sep 02 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
Jul 25 PHP
php实现等比例压缩图片
Jul 26 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 PHP
PHP cURL初始化和执行方法入门级代码
May 28 #PHP
php支持中文字符串分割的函数
May 28 #PHP
typecho插件编写教程(五):核心代码
May 28 #PHP
php实现paypal 授权登录
May 28 #PHP
typecho插件编写教程(四):插件挂载
May 28 #PHP
PHP Opcache安装和配置方法介绍
May 28 #PHP
typecho插件编写教程(三):保存配置
May 28 #PHP
You might like
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
PHP引用返回用法示例
2016/05/28 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP7 新增功能
2021/03/09 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python中bisect的用法
2014/09/23 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python Gabor滤波器讲解
2020/10/26 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
怎么写好自荐书
2014/03/02 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
上下班时间调整通知
2015/04/23 职场文书
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python