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 一元分词算法
Nov 30 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
php实现rc4加密算法代码
Apr 25 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
php判断是否为json格式的方法
Mar 04 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
php对xml文件的增删改查操作实现方法分析
May 19 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
在smarty中调用php内置函数的方法
2013/02/07 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
CSS和Javascript简单复习资料
2010/06/29 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
BootStrap selectpicker
2016/06/20 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
python实现名片管理系统项目
2019/04/26 Python
Python向excel中写入数据的方法
2019/05/05 Python
销售职业生涯规划范文
2014/03/14 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
高考升学宴答谢词
2015/01/20 职场文书
父亲节寄语大全
2015/02/27 职场文书
单位证明范文
2015/06/18 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
MySQL 全文检索的使用示例
2021/06/07 MySQL
java基础——多线程
2021/07/03 Java/Android
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python