package com.iask.webchat.chatmachine;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

/**

 * 小黄鸡机器人

 */

public class SimsimiTools {

public static void main(String[] args) {

        try {

            System.out.println(getSimsimiContentByNiuren("哈哈"));

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

/**

     * 小黄鸡机器人

     *

     * @author ghma

     */

    public static String getSimsimiContentByNiuren(String params) {

        StringBuffer bufferRes = new StringBuffer();

        try {

            URL realUrl = new URL(

                    "http://www.niurenqushi.com/app/simsimi/ajax.aspx");

            HttpURLConnection conn = (HttpURLConnection) realUrl

                    .openConnection();

            // 连接超时

            conn.setConnectTimeout(25000);

            // 读取超时 --服务器响应比较慢,增大时间

            conn.setReadTimeout(25000);

HttpURLConnection.setFollowRedirects(true);

            // 请求方式

            conn.setRequestMethod("POST");

            conn.setDoOutput(true);

            conn.setDoInput(true);

            conn.setRequestProperty("User-Agent",

                    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0");

            conn.setRequestProperty("Accept", "*/*");

            conn.setRequestProperty("Referer",

                    "http://www.niurenqushi.com/app/simsimi/");

            conn.connect();

            // 获取URLConnection对象对应的输出流

            OutputStreamWriter out = new OutputStreamWriter(

                    conn.getOutputStream());

            // 发送请求参数

            out.write("txt=" + URLEncoder.encode(params, "UTF-8"));

            out.flush();

            out.close();

InputStream in = conn.getInputStream();

            BufferedReader read = new BufferedReader(new InputStreamReader(in,

                    "UTF-8"));

            String valueString = null;

            while ((valueString = read.readLine()) != null) {

                bufferRes.append(valueString);

            }

            in.close();

            if (conn != null) {

                // 关闭连接

                conn.disconnect();

            }

        } catch (Exception e) {

            System.out.println("小黄鸡接口调用出错!" + e.getMessage());

            return XiaoDouMachine.getXiaoDouMsg(params);

        }

if (bufferRes.toString().equals("干嘛")) {

            return XiaoDouMachine.getXiaoDouMsg(params);

        }

String finalRes = removeNews(bufferRes.toString());

        System.out.println("小黄鸡机器人回复:" + finalRes);

        return finalRes;

    }

/**

     * 屏蔽当前接口中的广告

     *

     * @return

     */

    public static String removeNews(String sendMsgs) {

        // 去除广告

        if (sendMsgs.indexOf("simsimi2") != -1) {

            sendMsgs = "偶是毛小驴,女,还木有男友,欢迎南华学子调戏   O(∩_∩)O";

        } else if (sendMsgs.indexOf("Database") != -1

                || sendMsgs.indexOf("Failed") != -1) {

            int random = (int) (Math.random() * 5);

            switch (random) {

            case 1:

                sendMsgs = "嗯";

                break;

            case 2:

                sendMsgs = "聊天其它的吧";

                break;

            case 3:

                sendMsgs = "嗯哼";

                break;

            case 4:

                sendMsgs = "哎呀";

                break;

            case 5:

                sendMsgs = "额";

                break;

            default:

                sendMsgs = "嗯";

                break;

            }

        } else if (sendMsgs.indexOf("Unauthorized access") != -1) {

            sendMsgs = "我怎么听不懂你说的什么意思呀[大哭]。咱们能换个话题吗!";

        } else if (sendMsgs.indexOf("你可以教我回答") != -1) {

            sendMsgs = "好吧";

        }

        // 替换部分内容

        sendMsgs = sendMsgs.replaceAll("傻逼", "sb");

        sendMsgs = sendMsgs.replaceAll("小九", "毛小驴");

        // sendMsgs = sendMsgs.replaceAll("小豆", "小贱贱");

        sendMsgs = sendMsgs

                .replaceAll(

                        "小豆机器人网页版地址:http://xiao.douqq.com QQ个性网http://www.xiugexing.com",

                        "伦家不懂官人的话了啦~");

        sendMsgs = sendMsgs.replaceAll("小豆", "毛小驴");

        sendMsgs = sendMsgs.replaceAll("人家", "伦家");

        sendMsgs = sendMsgs.replaceAll("林晨爱你QQ个性网http://www.xiugexing.com",

                "伦家不懂官人的话了啦~");

        return sendMsgs;

    }

}

用java实现Simsimi小黄鸡接口的更多相关文章

  1. Simsimi 小黄鸡机器人最新无限制接口api simsimi机器人接口api 微信公众号

    一.什么是Simsimi? simsimi公司是提供智能服务,其中一个服务是simsimi聊天机器人服务,每天有超过百万的用户聊天,国内最大的搜索引擎——百度的产品siri使用的就是simsimi提供 ...

  2. PIGCMS 关闭聊天机器人(小黄鸡)

    无脑操作举例 1.找到 WeixinAction.class.php 文件,路径: 你的版本\PigCms\Lib\Action\Home 2.查询 function chat ,在 chat() 函 ...

  3. C# Winfrom小黄鸡功能调用

    最近研究微信公众平台,搭建了一个微信聊天机器人,调用小黄鸡的公众接口,实现在线和小黄鸡聊天的功能. 接口调用不是很麻烦,不过是php版本,所以研究了一下C#的功能模块, Winfrom版 后台界面代码 ...

  4. 小黄鸡机器人和小I机器人的调用

    <?php    //---------------------------------聊天小机器人类---------------------------------------------- ...

  5. qt调用simsimi api实现小黄鸡

    项目地址:https://github.com/racaljk/xiaojianji 好吧我把它命名为小贱鸡.,下面说一说他的实现. 由于官方的simsimi api需要收费,免费试用版有各种限制,所 ...

  6. java实现小九机器人接口

    package com.iask.webchat.chatmachine; import java.net.URLEncoder; import org.apache.http.HttpEntity; ...

  7. Java生鲜电商平台-API接口设计之token、timestamp、sign 具体架构与实现(APP/小程序,传输安全)

    Java生鲜电商平台-API接口设计之token.timestamp.sign 具体设计与实现 说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃 ...

  8. 菜鸡的Java笔记 第三十五 接口定义增强

    接口定义增强        在java从一开始到现在接口之中的核心组成部分:抽象方法与全局常量,但是随着技术的不断发展,用户在使用过程之中发现了有一些问题        如果说现在有一个接口经过了长年 ...

  9. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. Tab标签栏 切换 权威总结

    angular的标签栏,有两种方法实现: 内容全部加载到页面中,再利用ng-show指令. 将每一块要加载的内容做成模板,利用ng-if指令加载. 用bootstrap的tab组件 用angular的 ...

  2. POJ 3254 状压DP

    题目大意: 一个农民有一片n行m列 的农场   n和m 范围[1,12]  对于每一块土地 ,1代表可以种地,0代表不能种. 因为农夫要种草喂牛,牛吃草不能挨着,所以农夫种菜的每一块都不能有公共边. ...

  3. [HDU1017]Exact cover[DLX][Dancing Links详解][注释例程学习法]

    Dancing Links解决Exact Cover问题. 用到了循环双向十字链表. dfs. 论文一知半解地看了一遍,搜出一篇AC的源码,用注释的方法帮助理解. HIT ACM 感谢源码po主.链接 ...

  4. 关于C++中的虚拟继承的一些总结

    1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念.虚拟基类是为解决多重继承而出现的.如:类D继承自类B1.B2,而类B1.B2都继承自类A,因此在类D中两次出现类A中的变量和函数.为了节省内存 ...

  5. linux初识-02常用命令

    文件目录操作命令 ls 现实文件和目录列表 ls -l 列出文件的详细信息 ls -a 列出当前目录所有文件 包括隐藏的文件 mkdir 创建目录 -p 父目录不存在的情况下先生成父目录 cd 切换目 ...

  6. ios 实时刷新屏幕

    index=; // timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:layer selector:@selector(setNe ...

  7. 3.4 C与汇编程序的相互调用

    为了提高代码执行效率,内核源代码中有些地方直接使用了汇编语言编制.这就会涉及在两种语言编制的程序之间相互调用的问题. 函数调用包括从一块代码到另一块代码之间的双向数据传递和执行控制转移.数据传递通过函 ...

  8. JQuery连接地址

    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> http://co ...

  9. python_基本语法_01

    离毕业工作还有几个月,本来想早点去公司实习,无奈gb学校不给放.好吧,既然这样,就学门语言. 参考与 http://www.cnblogs.com/vamei ,我是跟着这位博客牛人的博客教程学的,具 ...

  10. Hibernate+JPA

    参考链接:http://blog.163.com/hero_213/blog/static/398912142010312024809 近年来ORM(Object-Relational Mapping ...