java实现自动回复聊天机器人

所属分类: 软件编程 / java 阅读数: 46
收藏 0 赞 0 分享

本文实例为大家分享了java实现自动回复聊天机器人的具体代码,供大家参考,具体内容如下

聊天机器人

调用网上现有的接口,然后解析数据

以上是演示图片

源码下载地址

基本工作流程就是,调用API,解析返回的数据

HttpUtil类,调用API,获取返回的数据

package com;

import com.sun.org.apache.bcel.internal.generic.INSTANCEOF;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by zf on 2017/2/27.
 */
public class HttpUtil {
 private static final String API = "xxxxxxxxxxxxxxxxx";
 private static String MSG;
 private static HttpUtil INSTANCE;

 public static HttpUtil getInstance() {
  if (INSTANCE == null) {
   INSTANCE = new HttpUtil();
  }
  return INSTANCE;
 }

 private HttpUtil() {
 }

 public String sendRequest2API(String msg) {
  if (msg.length() > 0) {
   this.MSG = msg;
   HttpURLConnection connection = null;
   StringBuilder response = new StringBuilder();
   try {
    URL url = new URL(API + MSG);
    connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");
    connection.setConnectTimeout(8000);
    connection.setReadTimeout(8000);
    InputStream in = connection.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line;
    while ((line = reader.readLine()) != null) {
     response.append(line);
    }
   } catch (Exception e) {
    e.printStackTrace();
   } finally {
    if (connection != null) {
     connection.disconnect();
    }
    return response.toString();
   }
  }
  return null;
 }
}

UI类,界面

package com;

import com.google.gson.Gson;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

/**
 * Created by zf on 2017/2/27.
 */
public class MainUI {
 private JFrame jFrame;
 private JPanel jPanel;
 private JButton sendMsgBtn;
 private JTextArea msgTextArea;
 private JTextArea historyTextArea;
 private static String MSG;
 private static StringBuilder history = new StringBuilder();

 public MainUI() {
  jFrame = new JFrame("自动聊天");
  jPanel = new JPanel();
  sendMsgBtn = new JButton("发送");
  msgTextArea = new JTextArea("这里发生消息");
  historyTextArea = new JTextArea(20,20);
  historyTextArea.setBackground(new Color(255, 255, 255));
  jPanel.add(historyTextArea);
  jPanel.add(msgTextArea);
  jPanel.add(sendMsgBtn);
  jFrame.add(jPanel);
  jFrame.setSize(500, 500);
  jFrame.setLocationRelativeTo(null);
  jFrame.setVisible(true);

  sendMsgBtn.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    MSG = msgTextArea.getText();
    history.append("我:" + "\n" + MSG + "\n");
    Gson gson = new Gson();
    RobotAnswer robotAnswer = gson.fromJson(HttpUtil.getInstance().sendRequest2API(MSG), RobotAnswer.class);
    history.append(robotAnswer.getAnswer());
    historyTextArea.setText(history.toString());
    System.out.println(history);
   }
  });
 }

 public static void main(String[] args) {
  new MainUI();
 }
}

机器人回复类

package com;

import java.util.Date;

/**
 * Created by zf on 2017/2/27.
 */
public class RobotAnswer {
 private int result;
 private String content;
 private String answer;

 public RobotAnswer() {
 }

 public String getAnswer() {
  if (result == 0) {
   answer = "AI:" + "\n" + content;
  } else {
   answer = ".....";
  }
  return answer;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

spring boot 静态资源处理方法

本篇文章主要介绍了spring boot 静态资源处理方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解spring boot 使用application.properties 进行外部配置

这篇文章主要介绍了详解spring boot 使用application.properties 进行外部配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Java实现分页的前台页面和后台代码

这篇文章主要为大家详细介绍了Java实现分页的前台页面和后台代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解spring面向切面aop拦截器

spring中有很多概念和名词,比如过滤器、拦截器、aop等。这篇文章主要介绍了详解spring面向切面aop拦截器,有兴趣的可以了解一下。
收藏 0 赞 0 分享

Java easyui树形表格TreeGrid的实现代码

这篇文章主要为大家详细介绍了Java easyui树形表格TreeGrid的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java的NIO与IO的详解及对比

这篇文章主要介绍了Java的NIO与IO的详解及对比的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中网络IO的实现方式(BIO、NIO、AIO)介绍

这篇文章主要介绍了Java中网络IO的实现方式(BIO、NIO、AIO)介绍的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 敏感信息加密处理

本文主要介绍了Java 敏感信息加密处理的相关知识:1)敏感信息加密处理我们要实现什么;2)敏感信息加密处理我做了些什么;3)敏感信息加密实现方法。具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

详解使用Spring3 实现用户登录以及权限认证

这篇文章主要介绍了详解使用Spring3 实现用户登录以及权限认证,这里整理了详细的代码,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

Java的内存机制详解

本文主要介绍了Java的内存机制的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享
查看更多