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 array_merge下进行数组合并的代码
Jul 22 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
PHP 文件上传限制问题
Sep 01 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
PHP与Web页面的交互示例详解二
Aug 04 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框架的性能
2008/01/10 PHP
php IP及IP段进行访问限制的代码
2008/12/17 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
python圣诞树编写实例详解
2020/02/13 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
自荐信需注意事项
2014/01/25 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
Golang 对es的操作实例
2022/04/20 Golang