基于Android的智能聊天机器人的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Android的智能聊天机器人的设计与实现
学院名称:
专业:
班级:
学号:
姓名:
任课教师:
安卓智能聊天机器人开发(一)
这个聊天机器人有点像前段时间很火的一个安卓应用——小黄鸡
应用的实现其实很简单,网上有许多关于智能机器人聊天的接口,我们只需要去调用对应的接口,遵守它的API开发规范,就可以获取到我们想要的信息
这里我使用的接口是——图灵机器人(/openapi/)这个接口给我们返回的是Json字符串,我们只需要对它进行Json字符串解析,就可以实现这个应用。
开发步骤:
首先我们需要到这个图灵机器人的官网去注册一个账号,他会给我们一个唯一Key,通过这个Key和对应的API开发规范,我们就可以进行开发了。
然后在这个(/openapi/cloud/access_api.jsp)网址里可以找到相关的开发介绍
比如:请求方式,参数,返回参数,包括开发范例,一些返回的编码等信息
这里是官方提供的一个调用小案例(JAVA),这里我也顺带贴一下
/** 调用图灵机器人平台接口
* 需要导入的包:commons-logging-1.0.4.jar、 httpclient-4.3.1.jar、httpcore-4.3.jar
*/
public static void main(String[] args) throws IOException {
String INFO = URLEncoder.encode("北京今日天气", "utf-8");
String requesturl = "/openapi/api?key= 注册激活返回的Apikey&info="+INFO;
HttpGet request = new HttpGet(requesturl);
HttpResponse response =
HttpClients.createDefault().execute(request);
//200即正确的返回码
if(response.getStatusLine().getStatusCode()==200){
String result = EntityUtils.toString(response.getEntity()); System.out.println("返回结果:"+result);
}
}
好了,接下来开始实战吧,这个应用我打算写成两篇文章
第一篇讲下关于如何调用接口,从网上获取数据,包括解析Json字符串
第二篇会把这些获取的数据嵌入到安卓应用
首先,先写一个工具类,这个工具类是用来获取用户输入的信息并返回服务器提供的数据的
这里面用到了一个第三方提供的JAR包,Gson它是谷歌提供给我们用来使Json 数据序列化和反序列化的
关于Gson的使用我之前写过一篇笔记,不熟悉的朋友可以看看:Gson简要使用笔记(/lichenwei/p/3987429.html)
代码如下:具体看注释
package com.example.utils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import .HttpURLConnection;
import .MalformedURLException;
import .URLEncoder;
import java.util.Date;
import android.util.Log;
import com.example.pojo.Message;
import com.example.pojo.Message.Type;
import com.example.pojo.Result;
import com.google.gson.Gson;
/**
*
* 获取信息帮助类传入用户输入的字符,给出相对应的信息
*
*/
public class GetDataUtils {
private static final String API_KEY = "这里填写官方提供的KEY";// 申请的API_KEY值
private static final String URL =
"/openapi/api";// 接口请求地址
public String getChat(String msg) {//这个方法是获取服务端返回回来的Json数据,msg为用户输入的信息
String result = "";// 存放服务器返回信息的变量
InputStream inputStream = null;
ByteArrayOutputStream outputStream = null;
try {
// 进行资源请求
.URL url = new .URL(getMsgUrl(msg));
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();// 打开资源连接
// HttpURLConnection参数设定
httpURLConnection.setReadTimeout(5 * 1000);
httpURLConnection.setConnectTimeout(5 * 1000);
httpURLConnection.setRequestMethod("GET");
inputStream = httpURLConnection.getInputStream();// 获取一个输入流接收服务端返回的信息
int len = -1;
byte[] bs = new byte[124];// 用来接收输入流的字节数组
outputStream = new ByteArrayOutputStream();// 用一个输出流来输出刚获取的输入流所得到的信息
while ((len = inputStream.read(bs)) != -1) {// 从输入流中读取一定数量的字节,并将其存储在缓冲区数组
// bs 中
outputStream.write(bs, 0, len);// 往输入流写入
}