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 相关文章推荐
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
php获取url参数方法总结
Nov 13 PHP
php表单敏感字符过滤类
Dec 08 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
laravel框架中间件简单使用方法示例
Jan 25 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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 类型转换函数intval
2009/06/20 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
django orm模块中的 is_delete用法
2020/05/20 Python
解决python运行启动报错问题
2020/06/01 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
新书吧创业计划书
2014/01/31 职场文书
房地产端午节活动方案
2014/08/24 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
Python面向对象之成员相关知识总结
2021/06/24 Python