版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文介绍了如何使用Android搭建客户端,实现手机和服务器的交互。让我们了解如何采用SSH框架,把服务器端的信息用JSON的形式发送到手机端。AD:笔者以前是学的JavaEE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。首先在服务器端,我采用的是SSH框架,struts2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码:首先,在服务器端搭建好SSH框架,具体细节就不在陈述。struts.xml配置如下:<packagename="login"extends="json-default"><actionname="login"class="com.jclick.test.LoginAction"method="login"><resulttype="json"><paramname="includeProperties">result</param></result></action>5. </package>6.<packagename="login"extends="json-default"><actionname="login"class="com.jclick.test.LoginAction"method="login"><resulttype="json"><paramname="includeProperties">result</param></result></action>11. </package>手机端的代码如下:首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:1.packagecom.jclick.cache;2.importcom.jclick.bean.User;4.publicclassCache{6.privateUserUser;8.9.privateCache(){10.}/**构造单例*/privatestaticclassCacheHolder{privatestaticfinalCacheINSTANCE=newCache();}publicCachegetInstance(){returnCacheHolder.INSTANCE;}publicUsergetUser(){
returnUser;}publicvoidsetUser(UserUser){this.User=User;}25.}27.28.packagecom.jclick.cache;29.importcom.jclick.bean.User;31.32.publicclassCache{33.34.privateUserUser;35.36.privateCache(){9.50.51.}/**构造单例*/privatestaticclassCacheHolder{privatestaticfinalCacheINSTANCE=newCache();}publicCachegetInstance(){returnCacheHolder.INSTANCE;}publicUsergetUser(){returnUser;}publicvoidsetUser(UserUser){this.User=User;}52.53.接着开始书写手机端的协议,用户向服务器发送请求,同时服务器反馈给手机端信息的:1.tocol;2.3.importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.List;7.importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.client.HttpClient;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.message.BasicNameValuePair;importorg.json.JSONException;importorg.json.JSONObject;17.18.publicclassBaseProtocol{19.privateStringBuildersb=newStringBuilder();20.privateHttpClienthttpClient;privateHttpPosthttpRequest;privateHttpResponseresponse;24.privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();26.BaseProtocol(){httpClient=newDefaultHttpClient();}30./***向服务器端发送请求**@paramurl*@throwsException*/protectedvoidpack(Stringurl)throwsException{httpClient=newDefaultHttpClient();httpRequest=newHttpPost(url);40.httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));response=httpClient.execute(httpRequest);}44./***得到返回数据**@paramurl*@return*@throwsException*/protectedvoidparse()throwsException{//TODO状态处理500200if(response.getStatusLine().getStatusCode()==200){55.BufferedReaderbufferedReader2=newBufferedReader(newInputStreamReader(response.getEntity().getContent()));for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2.readLine()){sb.append(s);}}}64./***向服务器发送信息**@paramkey*@paramvalue*/
00022.123.124.publicvoidaddNameValuePair(Stringkey,Stringvalue){nameValuePair.add(newBasicNameValuePair(key,value));}/***返回JSONObject对象数据模型**@return*@throwsJSONException*/publicJSONObjectgetJSON()throwsJSONException{returnnewJSONObject(sb.toString());}}tocol;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.List;importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.client.HttpClient;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.message.BasicNameValuePair;importorg.json.JSONException;importorg.json.JSONObject;publicclassBaseProtocol{privateStringBuildersb=newStringBuilder();privateHttpClienthttpClient;privateHttpPosthttpRequest;privateHttpResponseresponse;privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();BaseProtocol(){httpClient=newDefaultHttpClient();}/***向服务器端发送请求**@paramurl*@throwsException*/protectedvoidpack(Stringurl)throwsException{httpClient=newDefaultHttpClient();
httpRequest=newHttpPost(url);httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));response=httpClient.execute(httpRequest);}/***得到返回数据**@paramurl*@return*@throwsException*/protectedvoidparse()throwsException{//TODO状态处理500200if(response.getStatusLine().getStatusCode()==200){BufferedReaderbufferedReader2=newBufferedReader(newInputStreamReader(response.getEntity().getContent()));for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2.readLine()){sb.append(s);}}}/***向服务器发送信息**@paramkey*@paramvalue*/publicvoidaddNameValuePair(Stringkey,Stringvalue){nameValuePair.add(newBasicNameValuePair(key,value));}/***返回JSONObject对象数据模型**@return*@throwsJSONException*/publicJSONObjectgetJSON()throwsJSONException{returnnewJSONObject(sb.toString());}接着是登陆协议,在这里我只是模拟登陆使用的一个类,仅供大家参考:tocol;69.170.171.}importorg.json.JSONObject;.3.54.55.importcom.jclick.bean.User;publicclassLoginProtocolextendsBaseProtocol{privatefinalstaticStringURL="http://localhost:8080/test/login";publicbooleancheckLogin(Userusr){try{pack(URL);parse();JSONObjectobj=this.getJSON();if(obj.getString("result").equals("failed")){returnfalse;}else{returntrue;}}catch(Exceptione){e.printStackTrace();returnfalse;}}}tocol;importorg.json.JSONObject;importcom.jclick.bean.User;publicclassLoginProtocolextendsBaseProtocol{privatefinalstaticStringURL="http://localhost:8080/test/login";publicbooleancheckLogin(Userusr){try{pack(URL);parse();JSONObjectobj=this.getJSON();if(obj.getString("result").equals("failed")){returnfalse;}else{returntrue;}}catch(Exceptione){e.printStackTrace();returnfalse;}}}
然后是User实体类,主要用于保存用户信息:1.packagecom.jclick.bean;2.3.publicclassUser{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}18.}20.21.packagecom.jclick.bean;5.36.37.publicclassUser{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}38.39.最后就是LoginActivity里边判断登陆的代码了,详细代码不再贴出来了,仅贴一个判断登陆的代码:1.privatevoidcheckedData(){username=((EditText)findViewById(R.id.username)).getText().toString();password=((EditText)findViewById(R.id.password)).getText().toString();4.Useruser=newUser();user.setUsername(username);user.setPassword(password);LoginProtocollogin=newLoginProtocol();
booleanresult=login.checkLogin(user);10.if(result){SpiderCache.getInstance().setUserSession(user);Toas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年武汉城市职业学院高职单招职业适应性考试参考题库及答案详解
- 2026年兰州资源环境职业技术学院高职单招职业适应性考试参考题库及答案详解
- 护理学测试题含答案
- 电工(高级)资格证考试考前冲刺模拟题库带答案详解(培优a卷)
- 2025四川南充德运水务建设投资有限公司专业技术人才招考8人笔试历年参考题库附带答案详解
- 2025南斗六星技术有限公司中层管理岗位招聘笔试历年参考题库附带答案详解
- 2025北京首新航空地面服务有限公司招聘(河北)笔试历年参考题库附带答案详解
- 2025北京世纪安泰建筑工程设计有限公司西安分公司招聘21人笔试历年参考题库附带答案详解
- 2025内蒙古兴安盟科右前旗俄体粮库有限公司招聘工作人员3人笔试历年参考题库附带答案详解
- 跌倒方面试题与正确答案
- 形神拳动作名称与图解
- 马克思主义政治经济学试题及答案
- 国能拟录人员亲属回避承诺书
- 蚕丝被的详细资料
- 2023年生产车间各类文件汇总
- WORD版A4横版密封条打印模板(可编辑)
- 2013标致508使用说明书
- YD5121-2010 通信线路工程验收规范
- 评价实验室6S检查标准
- 工程质量不合格品判定及处置实施细则
- 外观检验作业标准规范
评论
0/150
提交评论