您的位置:首页 > 编程语言 > Java开发

实现Android客户端与Eclipse服务器端基于Okthhp简单通信

2018-01-18 19:03 671 查看
最近在重温知识,所以借此机会也想把自己写的一些心得写出来供大家分享,写的有误或者不好的地方望大家见谅,好了,废话少说,直接进入正题,下面给大家介绍的就是基于目前主流网络通信框架的okhttp实现的Android与Eclipse通信。
首先说明:我用的Android客户端是Android studio,现在基本上都是用AS来开发App的,我们也要跟上主流是吧,Eclipse服务器端我是用Tomcat来实现的,简单轻巧,其实开发javaweb项目时,用MyEclipse是最合适的,但是这个正版需要money,学生党表示很无奈,好了,环境介绍完了,下面就是纯代码了。
先从Eclipse服务器端说起吧,我这儿用的是servlet实现的,主要就是把核心代码doPost()方法给贴出来了
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8"); //解决中文乱码
response.setHeader("content-type","text/html;charset=UTF-8"); //解决中文乱码
PrintWriter out = response.getWriter();

Student student1 = new Student();
student1.setName("程建新");  
student1.setAge(21);
student1.setBirthday("1996-09-08");
String[] str = {"读书", "运动"};
student1.setHobby(str);

Gson gson = new Gson();
out.print(gson.toJson(student1)); //打印Json数据
}

现在网络之间通信主流是用Json或xml通信,携带数据量较大,便于传输
下面是Android studio客户端的核心代码
private void getInformation() {
String url = "http://localhost:8080/StudentServlet/Stu"; //服务器地址
OkHttpClient client = new OkHttpClient();
final Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
call.enqueue(new Callback() { //okHttp异步加载
@Override
public void onFailure(Request request, IOException e) {
Log.d("服务器连接", "连接失败!!!");
}

@Override
public void onResponse(Response response) throws IOException {
// String str = response.body().string(); //注意这里用的是string()方法,而不能用toString()方法,两者是有区别的
//
// Gson gson = new Gson();
// Student stu = gson.fromJson(str, Student.class);

InputStream input = response.body().byteStream(); //用InputStream输入流接收数据
BufferedInputStream bufinput = new BufferedInputStream(input);
byte[] buffer = new byte[10000];
int bytes = bufinput.read(buffer);
final String str = new String(buffer, 0, bytes);

Log.d("服务器连接", "连接成功!");

Message message = Message.obtain();
message.what = 1;
Bundle bundle = new Bundle();
bundle.putString("Name", str);
message.setData(bundle);
handler.sendMessage(message); //View控件必须在主线程中更新

});
private Handler handler = new Handler(){	//接受Message信息,执行相应动作
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
Bundle bundle = msg.getData();
textView.setText(bundle.getString("Name", "NULL"));
break;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OkHttp Gson Handler
相关文章推荐