用Android搭建客户端手机和服务器交互开发实例Word文档格式.docx
- 文档编号:21926971
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:16
- 大小:18.36KB
用Android搭建客户端手机和服务器交互开发实例Word文档格式.docx
《用Android搭建客户端手机和服务器交互开发实例Word文档格式.docx》由会员分享,可在线阅读,更多相关《用Android搭建客户端手机和服务器交互开发实例Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
9.
10.
11.
手机端的代码如下:
首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:
1.packagecom.jclick.cache;
2.
3.importcom.jclick.bean.User;
4.
5.publicclassCache{
7.privateUserUser;
9.privateCache(){
11.}
12./**构造单例*/
13.privatestaticclassCacheHolder{
14.privatestaticfinalCacheINSTANCE=newCache();
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;
3.importjava.io.BufferedReader;
4.importjava.io.InputStreamReader;
5.importjava.util.ArrayList;
6.importjava.util.List;
8.importorg.apache.http.HttpResponse;
9.importorg.apache.http.NameValuePair;
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;
16.importorg.json.JSONObject;
17.
18.publicclassBaseProtocol{
19.privateStringBuildersb=newStringBuilder();
20.
21.privateHttpClienthttpClient;
22.privateHttpPosthttpRequest;
23.privateHttpResponseresponse;
24.
25.privateList<
NameValuePair>
nameValuePair=newArrayList<
();
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);
41.httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));
42.response=httpClient.execute(httpRequest);
43.}
45./**
46.*得到返回数据
47.*
48.*@paramurl
49.*@return
50.*@throwsException
51.*/
52.protectedvoidparse()throwsException{
53.//TODO状态处理500200
54.if(response.getStatusLine().getStatusCode()==200){
55.
56.BufferedReaderbufferedReader2=newBufferedReader(
57.newInputStreamReader(response.getEntity().getContent()));
58.for(Strings=bufferedReader2.readLine();
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.returnnewJSONObject(sb.toString());
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.http.client.entity.UrlEncodedFormEntity;
98.importorg.apache.http.client.methods.HttpPost;
99.importorg.apache.http.impl.client.DefaultHttpClient;
100.importorg.apache.http.message.BasicNameValuePair;
101.importorg.json.JSONException;
102.importorg.json.JSONObject;
103.
104.publicclassBaseProtocol{
105.
privateStringBuildersb=newStringBuilder();
106.
107.
privateHttpClienthttpClient;
108.
privateHttpPosthttpRequest;
109.
privateHttpResponseresponse;
110.
111.
privateList<
112.
113.
BaseProtocol(){
114.
httpClient=newDefaultHttpClient();
115.
116.
117.
/**
118.
*向服务器端发送请求
119.
*
120.
*@paramurl
121.
*@throwsException
122.
*/
123.
protectedvoidpack(Stringurl)throwsException{
124.
125.
httpRequest=newHttpPost(url);
126.
127.
httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));
128.
response=httpClient.execute(httpRequest);
129.
130.
131.
132.
*得到返回数据
133.
134.
135.
*@return
136.
137.
138.
protectedvoidparse()throwsException{
139.
//TODO状态处理500200
140.
if(response.getStatusLine().getStatusCode()==200){
141.
142.
BufferedReaderbufferedReader2=newBufferedReader(
143.
newInputStreamReader(response.getEntity().getContent()));
144.
for(Strings=bufferedReader2.readLine();
145.
.readLine()){
146.
sb.append(s);
147.
148.
149.
150.
151.
152.
*向服务器发送信息
153.
154.
*@paramkey
155.
*@paramvalue
156.
157.
publicvoidaddNameValuePair(Stringkey,Stringvalue){
158.
nameValuePair.add(newBasicNameValuePair(key,value));
159.
160.
161.
162.
*返回JSONObject对象数据模型
163.
164.
165.
*@throwsJSONException
166.
167.
publicJSONObjectgetJSON()throwsJSONException{
168.
returnnewJSONObject(sb.toString());
169.
170.
171.}
接着是登陆协议,在这里我只是模拟登陆使用的一个类,仅供大家参考:
3.importorg.json.JSONObject;
5.importcom.jclick.bean.User;
7.publicclassLoginProtocolextendsBaseProtocol{
9.privatefinalstaticStringURL="
http:
//localhost:
8080/test/login"
;
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.returnfalse;
25.}
27.}
28.
29.packagecom.jclick.protocol;
31.importorg.json.JSONObject;
32.
33.importcom.jclick.bean.User;
35.publicclassLoginProtocolextendsBaseProtocol{
privatefinalstaticStringURL="
publicbooleancheckLogin(Userusr){
try{
pack(URL);
parse();
JSONObjectobj=this.getJSON();
if(obj.getString("
returnfalse;
}else{
returntrue;
}catch(Exceptione){
e.printStackTrace();
53.
54.
55.}
然后是User实体类,主要用于保存用户信息:
1.packagecom.jclick.bean;
3.publicclassUser{
4.privateStringusername;
5.privateStringpassword;
6.publicStringgetUsername(){
7.returnusername;
8.}
9.publicvoidsetUsername(Stringusername){
10.this.username=username;
12.publicStringgetPassword(){
13.returnpassword;
14.}
15.publicvoidsetPassword(Stringpassword){
16.this.password=password;
17.}
18.
19.}
21.packagecom.jclick.bean;
22.
23.publicclassUser{
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
publicvoidsetUsername(Stringusername){
this.username=username;
publicStringgetPassword(){
returnpassword;
publicvoidsetPassword(Stringpassword){
this.password=password;
39.}
最后就是LoginActivity里边判断登陆的代码了,详细代码不再贴出来了,仅贴一个判断登陆的代码:
1.privatevoidcheckedData(){
2.username=((EditText)findViewById(R.id.username)).getText().toString();
3.password=((EditText)findViewById(R.id.password)).getText().toString();
5.Useruser=newUser();
6.user.setUsername(username);
7.user.setPassword(password);
8.LoginProtocollogin=newLoginProtocol();
9.booleanresult=login.checkLogin(user);
11.if(result)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 搭建 客户端 手机 服务器 交互 开发 实例