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 相关文章推荐
php判断字符以及字符串的包含方法属性
Aug 30 PHP
Session保存到数据库的php类分享
Oct 24 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
PHP入门经历和学习过程分享
Apr 11 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
php常见的魔术方法详解
Dec 25 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
教大家制作简单的php日历
Nov 17 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php中10个不同等级压缩优化图片操作示例
Nov 14 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程序的php代码
2008/04/07 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
requireJS使用指南
2016/04/27 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
python如何对链表操作
2020/10/10 Python
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
单位刻章介绍信范文
2014/01/11 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
自动一体化专业求职信
2014/03/15 职场文书
集中采购方案
2014/06/10 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
九不准学习心得体会
2016/01/23 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
Mysql基础之常见函数
2021/04/22 MySQL
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB