原创代码慕课网,讲师讲的太快,不方便理解,做个代码分析,方便以后阅读!如图页面
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) {