




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文介绍了如何使用 Android 搭建客户端, 实现手机和服务器的交互。 让我们了解如何采用SSH框架,把服务器端的信息用JSO N的形式发送到手机端。AD:笔者以前是学的 Java EE ,由于项目需要要开发 Android ,所以临时补了一个多星期, 主要是手机端和服务器端交互,双向开发的。首先在服务器端,我采用的是SSH框架,struts 2集合了 JSONfi件,服务器和客户端的信息交互采用的 JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个 JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码:首先,在服务器端搭建好 SSH
2、框架,具体细节就不在陈述。struts.xml配置如下:1.<packagename="login"extends ="json-default"2.<actionname="login"class ="com.jclick.test.LoginAction"method= "login"3.<resulttype="json"><paramname= "includeProperties">result</par
3、am></re.8.sult></action></ package ><packagename=<actionname="login"extends ="json-default""login"class ="com.jclick.test.LoginAction"method= "login" >9.<resulttype="json"><paramname= "incl
4、udeProperties">result</param></result>10.</action>11.</ package手机端的代码如下:首先, 手机端有一个缓存类, 主要用于缓存一些手机端需要访问的数据, 这样的好处是 可以达达节省手机和服务器的交互,用单例实现的:1. packagecom.jclick.cache;2.2. importcom.jclick.bean.User;4.3. publicclassCache6.4. privateUserUser;8.9. privateCache()3.14
5、.1.52.53./* 构造单例 */privatestaticclassCacheHolder privatestaticfinalCacheINSTANCE=newCache();publicCachegetInstance() returnCacheHolder.INSTANCE;publicUsergetUser()returnUser;publicvoidsetUser
6、(UserUser)this .User=User;packagecom.jclick.cache;importcom.jclick.bean.User;publicclassCacheprivateUserUser;privateCache()/* 构造单例 */privatestaticclassCacheHolder privatestaticfinalCacheINSTANCE=newCache();publicCachegetInstance()returnCacheHolder.INSTANCE;publicUsergetUser()returnUser;publicvoidset
7、User(UserUser)this .User=User;接着开始书写手机端的协议, 用户向服务器发送请求, 同时服务器反馈给手机端信息的:1. tocol;2.3. importjava.io.BufferedReader;4. importjava.io.InputStreamReader;5. importjava.util.ArrayList;6. importjava.util.List;7.8. importorg.apache.http.HttpResponse;9. importorg.apache.http.NameValuePai
8、r;10. importorg.apache.http.client.HttpClient;11. importorg.apache.http.client.entity.UrlEncodedFormEntity;12. importorg.apache.http.client.methods.HttpPost;13. importorg.apache.http.impl.client.DefaultHttpClient;14. importorg.apache.http.message.BasicNameValuePair;15. importorg.json.JSONException;1
9、6. importorg.json.JSONObject;17.18. publicclassBaseProtocol19. privateStringBuildersb=newStringBuilder();20.21. privateHttpClienthttpClient;22. privateHttpPosthttpRequest;23. privateHttpResponseresponse;24.25. privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>( );26.27.
10、BaseProtocol()28. httpClient=newDefaultHttpClient();29. 30.31. /*32. * 向服务器端发送请求33. *34. *paramurl35. *throwsException36. */37. protectedvoidpack(Stringurl)throwsException38. httpClient=newDefaultHttpClient();39. httpRequest=newHttpPost(url);40.41. httpRequest.setEntity(newUrlEncodedFormEntity(nameV
11、aluePair);42.response=httpClient.execute(httpRequest);43.44.45./*46.* 得到返回数据47.*48.*paramurl49.*return50.*throwsException51.*/52.protectedvoidparse()throwsException53./TODO 状态处理 50020054.if (response.getStatusLine().getStatusCode()= 200 )55.56.BufferedReaderbufferedReader2=newBufferedReader(57.newIn
12、putStreamReader(response.getEntity().getContent();58.for (Strings=bufferedReader2.readLine();s!= null ;s=bufferedReader259.readLine()60.sb.append(s);4.65./*66.* 向服务器发送信息67.*68.*paramkey69.*paramvalue70.*/71.publicvoidaddNameValuePair(Stringkey,Stringvalue)72.nameValuePair.add(newBasicNameV
13、aluePair(key,value);73.74.75./*76.* 返回 JSONObject 对象数据模型77.*78.*return79.*throwsJSONException80.*/81.publicJSONObjectgetJSON()throwsJSONException82.returnnewJSONObject(sb.toString();00016
14、.26.127.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;importo
15、rg.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 privateStringBuilder
16、sb=newStringBuilder();privateHttpClienthttpClient;privateHttpPosthttpRequest;privateHttpResponseresponse;privateList<NameValuePair>nameValuePair=newArrayList<NameValuePa ir>();BaseProtocol() httpClient=newDefaultHttpClient();/* 向服务器端发送请求*paramurl*throwsException*/ protectedvoidpack(Strin
17、gurl)throwsException httpClient=newDefaultHttpClient(); httpRequest=newHttpPost(url);httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair) );64.165.
18、69.response=httpClient.execute(httpRequest);* 得到返回数据*paramurl*return*throwsException*/ protectedvoidparse()throwsException/TODO 状态处理 500200if (response.getStatusLine().getStatusCode()= 200)BufferedReaderbufferedReader2=newBufferedReader( newInputStreamReader(response.getEntity().getCon
19、tent();s=bufferefor (Strings=bufferedReader2.readLine();s!= null dReader2.readLine()sb.append(s);/* 向服务器发送信息*paramkey*paramvalue*/ publicvoidaddNameValuePair(Stringkey,Stringvalue)nameValuePair.add(newBasicNameValuePair(key,value); /* 返回 JSONObject 对象数据模型*return*throwsJSONException*/ publicJSONObjec
20、tgetJSON()throwsJSONExceptionreturnnewJSONObject(sb.toString();170.171. 接着是登陆协议,在这里我只是模拟登陆使用的一个类,仅供大家参考:1. tocol;2.3. importorg.json.JSONObject;4.5. importcom.jclick.bean.User;6.7. publicclassLoginProtocolextendsBaseProtocol8.9. privatefinalstaticStringURL= "http:/localhost
21、:8080/test/login"10.11. publicbooleancheckLogin(Userusr)12. try 13. pack(URL);14. parse();15. JSONObjectobj= this .getJSON();16. if (obj.getString( "result" ).equals( "failed" )17. returnfalse;18. else 19. returntrue;20. 21. catch (Exceptione)22. e.printStackTrace();23. retu
22、rnfalse;24. 25. 26.27. 28.29. tocol;30.31. importorg.json.JSONObject;32.33. importcom.jclick.bean.User;34.35. publicclassLoginProtocolextendsBaseProtocol36.37. privatefinalstaticStringURL= "http:/localhost:8080/test/login"38.40.try 41.pack(URL);42.parse();43.JSONObject
23、obj=this .getJSON();44.if (obj.getString("result" ).equals("failed")45.returnfalse;46. else 47.returntrue;48.49. catch (Exceptione)50.e.printStackTrace();51.returnfalse;9.publicbooleancheckLogin(Userusr)55. 然后是 User 实体类,主要用于保存用户信息:1. packagecom.jclick.bean;2.3. publiccl
24、assUser4. privateStringusername;5. privateStringpassword;6. publicStringgetUsername()7. returnusername;8. 9. publicvoidsetUsername(Stringusername)10. this .username=username;11. 12. publicStringgetPassword()13. returnpassword;14. 15. publicvoidsetPassword(Stringpassword)16. this .password=password;1
25、7. 18.19. 20.21. packagecom.jclick.bean;22.23. publicclassUser24. privateStringusername;25. privateStringpassword;26. publicStringgetUsername()27. returnusername;28. 29. publicvoidsetUsername(Stringusername)30. this .username=username;31. 32. publicStringgetPassword()33. returnpassword;34. 35. publi
26、cvoidsetPassword(Stringpassword)36. this .password=password;37. 38.39. 最后就是 LoginActivity 里边判断登陆的代码了, 详细代码不再贴出来了, 仅贴一个判断登陆的代码:1. privatevoidcheckedData()2. username=(EditText)findViewById(R.id.username).getText().toString( );3. password=(EditText)findViewById(R.id.password).getText().toString( );4.5
27、. Useruser=newUser();6. user.setUsername(username);7. user.setPassword(password);8. LoginProtocollogin=newLoginProtocol();9. booleanresult=login.checkLogin(user);10.if (result)SpiderCache.getInstance().setUserSession(user);11.12. Toast.makeText(getApplicationContext(),13. Intentintent=newIntent();14. intent.setClass(LoginActivity.15. startActivity(inte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届平顶山市重点中学九年级英语第一学期期末质量跟踪监视试题含解析
- 2026届辽宁省大连市高新园区化学九上期末监测模拟试题含解析
- 夜间文案工作总结与激励
- 王安石《南乡子自古帝王州》古诗鉴赏试题答案解析及译文
- 湖北省武汉东湖高新区2026届九年级英语第一学期期末达标测试试题含解析
- 银行安全保卫培训课件
- 预防接种沟通艺术
- 2026届江苏省南通市通州区金北学校九年级英语第一学期期末检测试题含解析
- 2026届陕西省汉中学市南郑区红庙镇初级中学九上化学期中复习检测模拟试题含解析
- 河北省石家庄市长安区第二十二中学2026届英语九上期末复习检测试题含解析
- 2025文具用品采购合同范本格式
- 电气检修生产安全培训课件
- 2025天津津南国有资本投资运营集团有限公司及实控子公司招聘工作人员招聘5人考试模拟试题及答案解析
- 营造清朗空间+课件-2025-2026学年(统编版2024)道德与法治八年级上册
- 2025年遴选财务岗考试题及答案
- 《2025新版检验检测机构管理评审报告》
- 移动与酒店合作合同协议
- excel操作考试题及答案
- 项目安全管理实施细则
- 车间偷盗行为管理办法
- 2025劳动教育考试试题及答案
评论
0/150
提交评论