资讯专栏INFORMATION COLUMN

typecho插件编写教程6 - 调用接口

endless_road / 2750人阅读

摘要:此文原本发表于我的博客老高的技术博客,欢迎和老高交流此篇我们开始调用接口,我们在插件类中新定义一个方法,起名为,在方法中我们通过系统配置获取接口调用地址。

此文原本发表于我的博客 老高的技术博客 ,欢迎和老高交流!


此篇我们开始调用接口,我们在插件类中新定义一个方法,起名为send_post,在方法中我们通过系统配置获取接口调用地址。

百度给的例子中使用了php的CURL,更高级的使用方法可以学习 PHP_cURL初始化和执行方法

下面我们结合一下百度站长提供的代码。

php    /**
     * 发送数据
     * @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("
", $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 . "
");
    }

由于我们还没有建立日志系统,所以我们将日志先写入文件,先看效果吧!

返回值:

json{"remain":48,"success":1}

Good!看来没有什么问题!不过为了保险起见,我还是用typecho自带的http类重写了此方法。

php    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("
", $urls));
        $http->setHeader("Content-Type","text/plain");
        $result = $http->send($api);

        //记录日志
        file_put_contents("/tmp/send_log", date("H:i:s") . $result . "
");
    }
}

现在我们的插件基本能够运行了,但是在结构上还可以进一步优化!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30267.html

相关文章

  • typecho插件编写教程5 - 核心代码

    摘要:此文原本发表于我的博客老高的技术博客,欢迎和老高交流之前啰嗦了很多,现在开始写核心代码。至此我们已经拿到了文章的永久链接,下一步就是给百度服务器发送数据了本节完 此文原本发表于我的博客 老高的技术博客 ,欢迎和老高交流! 之前啰嗦了很多,现在开始写核心代码。 分析一下,发布文章的时候,我们需要的信息就是当前文章的URL,我们需要想办法从$contents、 $class中拿到他。...

    GraphQuery 评论0 收藏0
  • typecho插件编写教程3 - 保存配置

    摘要:完善信息,使其更接地气插件安装成功,请进入设置填写准入密钥插件卸载成功如何保存配置准入密钥在哪里保存当然是数据库了。 此文原本发表于我的博客 老高的技术博客 ,欢迎和老高交流! 上一节我们制作了一个裸插件,下面我们开始让我们的插件开始工作! 完善方法 两个方法 我们实现activate和deactivate方法 php public static function...

    HmyBmny 评论0 收藏0
  • typecho插件编写教程2 - 新插件

    摘要:百度结构化插件教程版老高以上代码老高起了个名字叫裸插件,意思是啥都干不了的插件,每次写插件的时候老高都会准备一个裸插件。 此文原本发表于我的博客 老高的技术博客 ,欢迎和老高交流! 第一节我们了解了一个插件的基本构成,下面我们需要一个实例练习巩固。 真赶巧,老高最近正在改版百度sitemap提交插件for typecho,下面和老高一起改版吧! 准备 不知道大家用过WP版...

    ccj659 评论0 收藏0
  • typecho插件编写教程4 - 插件

    摘要:在老高这儿是一个概念官方的插件接口及功能列表我们的插件需要执行的逻辑在这里,类的方法文件路径,可以看到,接口为我们传递了两个参数,一个是发布的内容,另一个是类本身。为什么叫方法老高从中复制粘贴过来的,一直没有改名。 终于,在能够保存配置信息后,我们可以开始编写插件的挂载功能了。 首先我们需要知道系统为我们在各个关键的环节都预留了插件点给我们,系统运行到插件点时,会检测到是否有插件挂在...

    z2xy 评论0 收藏0
  • typecho插件编写教程7 - Helper类

    摘要:输出类似强行删除某插件此方法用于卸载插件失败时的替补方法,老高一般将此方法写入插件的方法里,这样刷新以下后台,出问题的插件就被卸载了。比如老高的插件,就用此方法为系统添加了一个的路由。 此文原本发表于我的博客 老高的技术博客 ,欢迎和老高交流! Helper类为我们封装了很多与插件有关的操作,并且全部是公共静态方法,比如获取系统配置、添加路由、添加面板等功能,是开发插件必不可少的工...

    Carson 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<