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实现框架(二)
Oct 09 PHP
谈谈PHP语法(4)
Oct 09 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
PHP生成excel时单元格内换行问题的解决方法
Aug 26 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
php 命名空间(namespace)原理与用法实例小结
Nov 13 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
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
学习jquery之一
2007/04/27 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
angular2使用简单介绍
2016/03/01 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
python模块之StringIO使用示例
2015/04/08 Python
Python中List.index()方法的使用教程
2015/05/20 Python
python使用tornado实现简单爬虫
2018/07/28 Python
python cs架构实现简单文件传输
2020/03/20 Python
pycham查看程序执行的时间方法
2018/11/29 Python
解析Python的缩进规则的使用
2019/01/16 Python
python程序文件扩展名知识点详解
2020/02/27 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
献爱心活动总结
2014/05/07 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
万能检讨书
2015/01/27 职场文书
公司禁烟通知
2015/04/23 职场文书
党员读书活动心得体会
2016/01/14 职场文书
员工给公司的建议书
2019/06/24 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL