本文介绍了如何使用Android搭建客户端,实现手机和服务器的交互。让我们了解如何采用SSH框架,把服务器端的信息用JSON的形式发送到手机端。
AD:
笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。
首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码:
首先,在服务器端搭建好SSH框架,具体细节就不在陈述。l配置如下:
1. <packagename="login"extends="json-default">
2. <actionname="login"class="st.LoginAction"method="login">
3. <resulttype="json"><paramname="includeProperties">result</param></result>
4. </action>
5. </package>
6.
7. <packagename="login"extends="json-default">
8. <actionname="login"class="st.LoginAction"method="login">
9. <resulttype="json"><paramname="includeProperties">result</param></result>
10. </action>
11. </package>
手机端的代码如下:
首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:
1. packagecom.jclick.cache;
2.
3. importcom.jclick.bean.User;
4.
5. publicclassCache{
6.
7. privateUserUser;
8.
9. privateCache(){
10.
11. }
12. /**构造单例*/
13. privatestaticclassCacheHolder{
14. privatestaticfinalCacheINSTANCE=newCache();
jfinal项目实例15. }
16. publicCachegetInstance(){
17. returnCacheHolder.INSTANCE;
18. }
19. publicUsergetUser(){
20. returnUser;
21. }
22. publicvoidsetUser(UserUser){
23. this.User=User;
24. }
25.
26. }
27.
28. packagecom.jclick.cache;
29.
30. importcom.jclick.bean.User;
31.
32. publicclassCache{
33.
34. privateUserUser;
35.
36. privateCache(){
37.
38. }
39. /**构造单例*/
40. privatestaticclassCacheHolder{
41. privatestaticfinalCacheINSTANCE=newCache();
42. }
43. publicCachegetInstance(){
44. returnCacheHolder.INSTANCE;
45. }
46. publicUsergetUser(){
47. returnUser;
48. }
49. publicvoidsetUser(UserUser){
50. this.User=User;
51. }
52.
53. }
接着开始书写手机端的协议,用户向服务器发送请求,同时服务器反馈给手机端信息的:
1. packagecom.jclick.protocol;
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.NameValuePair;
10. importorg.apache.http.client.HttpClient;
11. importorg.apache.ity.UrlEncodedFormEntity;
12. importorg.apache.hods.HttpPost;
13. importorg.apache.http.impl.client.DefaultHttpClient;
14. importorg.ssage.BasicNameValuePair;
15. importorg.json.JSONException;
16. importorg.json.JSONObject;
17.
18. publicclassBaseProtocol{
19. privateStringBuildersb=newStringBuilder();
20.
21. privateHttpClienthttpClient;
22. privateHttpPosthttpRequest;
23. privateHttpResponseresponse;
24.
25. privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();
26.
27. BaseProtocol(){
28. httpClient=newDefaultHttpClient();
29. }
30.
31. /**
32. *向服务器端发送请求
33. *
34. *@paramurl
35. *@throwsException
36. */
37. protectedvoidpack(Stringurl)throwsException{
38. httpClient=newDefaultHttpClient();
39. httpRequest=newHttpPost(url);
40.
41. httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));
42. ute(httpRequest);
43. }
44.
45. /**
46. *得到返回数据
47. *
48. *@paramurl
49. *@return
50. *@throwsException
51. */
52. protectedvoidparse()throwsException{
53. //TODO状态处理500200
54. if(StatusLine().getStatusCode()==200){
55.
56. BufferedReaderbufferedReader2=newBufferedReader(
57. Entity().getContent()));
58. for(adLine();s!=null;s=bufferedReader2
59. .readLine()){
60. sb.append(s);
61. }
62. }
63. }
64.
65. /**
66. *向服务器发送信息
67. *
68. *@paramkey
69. *@paramvalue
70. */
71. publicvoidaddNameValuePair(Stringkey,Stringvalue){
72. nameValuePair.add(newBasicNameValuePair(key,value));
73. }
74.
75. /**
76. *返回JSONObject对象数据模型
77. *
78. *@return
79. *@throwsJSONException
80. */
81. publicJSONObjectgetJSON()throwsJSONException{
82. String());
83. }
84.
85. }
86.
87. packagecom.jclick.protocol;
88.
89. importjava.io.BufferedReader;
90. importjava.io.InputStreamReader;
91. importjava.util.ArrayList;
92. importjava.util.List;
93.
94. importorg.apache.http.HttpResponse;
95. importorg.apache.http.NameValuePair;
96. importorg.apache.http.client.HttpClient;
97. importorg.apache.ity.UrlEncodedFormEntity;
98. importorg.apache.hods.HttpPost;
99. importorg.apache.http.impl.client.DefaultHttpClient;
100. importorg.ssage.BasicNameValuePair;
101. importorg.json.JSONException;
102. importorg.json.JSONObject;
103.
104. publicclassBaseProtocol{
105. privateStringBuildersb=newStringBuilder();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论