本文介绍了如何使用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小时内删除。