实现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控件必须在主线程中更新
});
首先说明:我用的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; } } };
相关文章推荐
- Android 使用socket 实现简单的客户端和服务器端互相通信
- Linux下安装protobuf并实现简单的客户端服务器端通信
- Linux下安装protobuf并实现简单的客户端服务器端通信
- Android中socket编程实现简单的客户端和服务器之间的通信
- 基于Scoket的Android端与服务器端的通信实现
- android-----基于XUtils照片上传客户端以及服务器端实现
- C#基于TCP&UDP实现服务器与多个客户端之间的通信(客户端之间直接通信,不靠服务器端转发消息)
- Linux下安装protobuf并实现简单的客户端服务器端通信
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
- Mina长连接框架实现Android客户端与服务器端通信
- 服务器端和android客户端通信 服务器端实现
- C++ 简单的 Tcp 实现[socket] 服务器端与客户端通信
- Android实现蓝牙客户端与服务器端通信示例
- Android中使用Socket来实现服务器端和客户端,进行数据通信(使用原生Socket)
- Android手机客户端通过JSP实现与Tomcat服务器端通信(Msql数据库,Json作为载体)--客户端代码
- Mina长连接框架实现Android客户端与服务器端通信
- Android手机客户端通过JSP实现与Tomcat服务器端通信(Msql数据库,Json作为载体)--服务端代码
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- 一个简单的Android客户端从服务器端获取json数据并解析的实现代码
- 实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用