一步一步教你服务器端和android客户端通信 之一 服务器端实现
之前的博客上写了很多自己感想,感悟没有涉及到具体技术,感觉愧对大家 :) ,今天来点干货。
现在孤立的手机端应用已经不多了,大都需要涉及到和服务器端通信。想当时我们团队做第一款应用时为解决这个问题费了不少功夫,现在这个技术已经在团队内部固化和成熟了。在这里和大家分享一下。
大多数的通信方案有 JSON,或web service。我们最终确认使用的是web service(J2EE服务器端)+ ksoap(android客户端),原因是我们没有PHP方面的知识积累,选用Java至少我们还懂一些。可是在之后的实作里碰到很大的困难,一是网上没有找到详细的一步步从头开始资料;二是,网上提供的例子很简单,我记得是一个做加法的例子;实际中,经常要涉及到结构参数的回传和调用;三是没有找到服务器端+android客户端的完整例子;都是割裂的,要嘛讲的是服务器端,要嘛讲的是客户端。现在把我们的经验系统的分享给大家。
先介绍一下服务器端开发环境是 myeclipse 9.0。
1,建立 web service工程,如下所示
2,填写工程配置,注意红圈部分,一定要选“JAX-WS”;点击“确认”,就生成了基本的工程。
3,这里我们做些准备工作,实现一个客户端启动时自动检测版本信息的例子:
(1)建立一个 bean,注意这是个POJO,需要有setXXX, getXXX,否则将不能正常工作。
1 public class Clientversion { 2 // Fields 3 4 private Integer oldestVersion; // 目前可兼容的最老版本 5 6 private Integer currentVersion; // 当前最新版本 7 8 private String downloadUrl1; // 最新版客户端下载地址1 9 10 private String downloadUrl2; // 最新版客户端下载地址2 11 12 private String releaseNote; // 关于最新版的描述 13 14 // Constructors 15 16 /** default constructor */ 17 18 public Clientversion() { 19 20 } 21 22 /** full constructor */ 23 24 public Clientversion(Integer oldestVersion, Integer currentVersion, 25 26 String downloadUrl1, String downloadUrl2, String releaseNote) { 27 28 this.oldestVersion = oldestVersion; 29 30 this.currentVersion = currentVersion; 31 32 this.downloadUrl1 = downloadUrl1; 33 34 this.downloadUrl2 = downloadUrl2; 35 36 this.releaseNote = releaseNote; 37 38 } 39 40 // Propertyaccessors 41 42 public Integer getOldestVersion() { 43 44 return this.oldestVersion; 45 46 } 47 48 public void setOldestVersion(Integer oldestVersion) { 49 50 this.oldestVersion = oldestVersion; 51 52 } 53 54 public Integer getCurrentVersion() { 55 56 return this.currentVersion; 57 58 } 59 60 public void setCurrentVersion(Integer currentVersion) { 61 62 this.currentVersion = currentVersion; 63 64 } 65 66 public String getDownloadUrl1() { 67 68 return this.downloadUrl1; 69 70 } 71 72 public void setDownloadUrl1(String downloadUrl1) { 73 74 this.downloadUrl1 = downloadUrl1; 75 76 } 77 78 public String getDownloadUrl2() { 79 80 return this.downloadUrl2; 81 82 } 83 84 public void setDownloadUrl2(String downloadUrl2) { 85 86 this.downloadUrl2 = downloadUrl2; 87 88 } 89 90 public String getReleaseNote() { 91 92 return this.releaseNote; 93 94 } 95 96 public void setReleaseNote(String releaseNote) { 97 98 this.releaseNote = releaseNote; 99 100 } 101 102 }
(2)设一个类,定义一个接口函数
RequestHandler.java
1 package cn.stepbystep.service; 2 3 import cn.stepbystep.bean.Clientversion; 4 5 public class RequestHandler { 6 public Clientversion requestVersion(int version) // 客户端调用的接口,传入client端的参数 7 8 { 9 10 Clientversion info = new Clientversion(); 11 12 // 构造一个版本信息,之后回传给客户端 13 14 info.setCurrentVersion(103); 15 16 info.setOldestVersion(100); 17 18 info.setDownloadUrl1("http://www.smallke.net"); 19 20 info.setDownloadUrl1("http://www.smallke.net/promote.html"); 21 22 info.setReleaseNote("这是个例子"); 23 24 return info; 25 26 } 27 28 }
(3)最后的工程的结构是这样的:
4,生成 web service接口
(1) 在快捷工具栏选择“New Web Service”
(2) 出现一个对话框,做出图示选择,然后点“next”
(3) 选择需要实现web service的接口
注意,在红圈处输入刚才我们实现的类;其他部分内容为自动产生,不需要做任何修改;然后点击“finish”
(4) 再次查看工程,会发现多了一个文件,这是web service自动生成的
同时会在web.xml里发现多几行配置
5,到此,服务器端的工作就完成了。让我们来简单测试。
(1)在工程上右键,弹出菜单,选择 Debug as -> Myeclipse server application
(2) 选择一个应用容器,我选的是 MyEclipse自带的tomcat
(3) 工程起来后,自动切到默认主页
(4) 在地址栏上输入这个地址,就会看到以下页面;到此证明服务器端是OK了。
之后的博客我会详细讲述android客户端的实现。
原文链接:http://blog.csdn.net/smallhorse87/article/details/7736577

浙公网安备 33010602011771号