Bootstrap

图灵机器人智能聊天—代码分析

原创代码慕课网,讲师讲的太快,不方便理解,做个代码分析,方便以后阅读!如图页面


1.项目要求
要求接入图灵官网的API,做一个能机器  现类似微信的聊天页面
2.项目核心
 访问网络, JSON解析,枚举实现双视图适配器的原理
3.项目结>  基本概括:5个类,  两个getset类,一个核心类访问网络,一个Activity处理页面 还有一个测试类如图:
"MyFahui.java"  是存放访问网址后返回值的getset类           编码+Json
"Myjiexi.java"    是对Jons解析后的值后的getset类,        消息+时间+枚举
"HttpUtil.Java"   是 发送接受消息的核心类,传入发送消息,得到Json数据,被解析到MyFahui.java中,然后最后交给了Myjiexi,
(作为一个一体成型的工具类,只要传入String,就能返回出一个完整getset类)
”MyActivity.Java“ 是一个Activity,负责显示页面,双套布局的适配器,线程更新适配器等
HttpText.java"是一个测试类,主要负责测试工作,在主页面没有绘制前,对"HttpUtil.java"进行测试工作


1.一旦消息传工具类,自动拼接成一个网址,并访问网址得到Json格式的数据,被解析成到一个getset类中封装好==================================================================================

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URLEncoder;
import java.util.Date;
<img src="https://img-blog.csdn.net/20151018231250086?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />



import com.google.gson.Gson;
import com.info.MyFanhui;
import com.info.Myjiexi;
import com.info.Myjiexi.Type;

public class HttpUtil {
	private static final String URL="http://www.tuling123.com/openapi/api";
	private static final String KEY="742330b59b0cdea8a537db941bfa087f";

	/*【核心】:
	 * 发送一个消息,被解析成一个getset类-----------------------------------------
	 * */
	public static Myjiexi jiexi(String stt){
				Myjiexi jiexi=new Myjiexi();     
				MyFanhui  fh=null;                    		
				String xiaoxi=doGet(stt);            //传入String,得到Json返回
			
				Gson gson=new Gson();
				try {
					fh=gson.fromJson(xiaoxi,MyFanhui.class);
					jiexi.setMsg(fh.getText());          //设置返回的内容
				} catch (Exception e) {
					jiexi.setMsg("服务器繁忙");
				}
                      
				jiexi.setDate(new Date());            //设置当前时间
				jiexi.setType(Type.WO);               //设置枚举类型
				return jiexi
						;
		
		}
	
	
/*核心方法,-------------------------------------------------
	    传入String字符串,自动拼接好地址,Url
	    传入访问网络地址,自动返回字符串,Json
	*/
	public static String doGet(String str){
		String str2=Pingjie(str);         //【此方法拼接出完整地址】
	     String str3= Fangwen(str2);   //【此方法连接网址】
		return str3; 
	}
	//【访问连接网址】
	private static String Fangwen(String str2) {
		InputStream is = null;
		ByteArrayOutputStream bs = null;
		
		String str3="";
		try {
			java.net.URL 			url= new java.net.URL(str2);                               
			HttpURLConnection conn=(HttpURLConnection) url.openConnection(); 
											conn.setReadTimeout(5*1000); 
											conn.setConnectTimeout(5*1000);
											conn.setRequestMethod("GET");								
		           is=conn.getInputStream();           //输入流
				int len=-1;
				byte[] by=new byte[128];
				 	bs=new ByteArrayOutputStream();//输出流
				while((len=is.read(by))!=-1){
					bs.write(by, 0, len);		
				}
				bs.flush();                                         //清除缓冲区
			str3=new String(bs.toByteArray());     //*输出流String
		} catch (Exception e) {
;