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自动跳转中英文页面
Jul 29 PHP
php一句话cmdshell新型 (非一句话木马)
Apr 18 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
php获取汉字首字母的函数
Nov 07 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 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
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
jquery仿微信聊天界面
2017/05/06 jQuery
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
Python socket编程实例详解
2015/05/27 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
python可视化text()函数使用详解
2020/02/11 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
Python基于Faker假数据构造库
2020/11/30 Python
美国手机支架公司:PopSockets
2019/11/27 全球购物
项目建议书格式
2014/03/12 职场文书
求职信模板
2014/05/23 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
班级文化标语
2014/06/23 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python