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 相关文章推荐
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
简单实现限定phpmyadmin访问ip的方法
Mar 05 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
PHP常用处理静态操作类
Apr 03 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
PHP实现链式操作的三种方法详解
Nov 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 简单日历实现代码
2009/10/28 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
python cs架构实现简单文件传输
2020/03/20 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
爱护公共设施的标语
2014/06/24 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
行政申诉状范文
2015/05/20 职场文书
学生会部长竞选稿
2015/11/19 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
如何Tomcat中使用ipv6地址
2022/05/06 Servers