最近在重温知识,所以借此机会也想把自己写的一些心得写出来供大家分享,写的有误或者不好的地方望大家见谅,好了,废话少说,直接进入正题,下面给大家介绍的就是基于目前主流网络通信框架的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;        }    }};

更多相关文章

  1. [置顶] Android中ail的作用和使用说明
  2. 用 天天模拟器 + Eclipse或Android(安卓)Studio调试app
  3. 个人总结--Android(安卓)应用开发中国大学生挑战赛
  4. 《第一行代码Android》学习总结第二章 Acitivity的生命周期与启
  5. 手把手教你仿一个知乎日报Android客户端(三)主页面设计
  6. 如何使用AndroidStudio将开源项目library发布到jcenter
  7. 挑战独立开发项目能力--IT蓝豹
  8. 如何取得Android(安卓)系统的源代码--全部
  9. 编写高效 Android代码

随机推荐

  1. 基于PHP微信网页获取用户信息的实例分析
  2. 基于canvasJS在PHP中制作动态图表详解
  3. 一文读懂php设计模式之代理模式
  4. PHP下ajax跨域的解决方案之window.name实
  5. 解析PHP生成图表pChart的示例
  6. 一文读懂简单工厂、工厂方法、抽象工厂
  7. 解决PHP处理Ajax请求与Ajax跨域问题
  8. 详解PHP底层运行机制与工作原理
  9. 学习php-fpm服务启动脚本的方法
  10. php设计模式之组合模式——处理树形结构