




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本文介紹了如何使用Android搭建客戶端,實現手機和服務器的交互。讓我們了解如何采用SSH框架,把服 務器端的信息用JSON的形式發送到手機端。AD:筆者以前是學的Java EE,由于項目需要要開發Android,所以臨時補了一個多星期,主要是手機端和 服務器端交互,雙向開發的。首先在服務器端,我采用的是SSH框架,struts 2集合了 JSON插件,服務器和客戶端的信息交互采用 的JSON來傳輸,由于在服務器端用了 Struts 2,所以我就用裝了一個JSON插件。這樣,很輕易的就把服 務器端的信息用JSON的形式發送到了手機端。以下是代碼:首先,在服務器端搭建好SSH框架,具體細節就不
2、在陳述。struts.xml配置如下:result6.result手機端的代碼如下:首先,手機端有一個緩存類,主要用于緩存一些手機端需要訪問的數據,這樣的好處是可以達達節省手 機和服務器的交互,用單例實現的:packagecom.jclick.cache;2.importcom.jclick.bean.User;4.publicclassCache6.privateUserUser;8.privateCache()10. TOC o 1-5 h z /*構造單例*/Private static class CacheHolderPrivate static final CacheINSTANC
3、E=newCache();Public Cache getInstance()returnCacheHolder.INSTANCE;publicUsergetUser()returnUser; TOC o 1-5 h z publicvoidsetUser(UserUser)this.User=User;25.27.packagecom.jclick.cache;29.importcom.jclick.bean.User;31.publicclassCache33.privateUserUser;35.privateCache()37. TOC o 1-5 h z /*構造單例*/privat
4、estaticclassCacheHolderprivatestaticfinalCacheINSTANCE=newCache();publicCachegetInstance()returnCacheHolder.INSTANCE;publicUsergetUser()returnUser;publicvoidsetUser(UserUser)this.User=User;52.接著開始書寫手機端的協議,用戶向服務器發送請求,同時服務器反饋給手機端信息的:tocol;2.importjava.io.BufferedReader;importjava.io.InputStreamReader;
5、importjava.util.ArrayList;importjava.util.List;7.importorg.apache. HYPERLINK http:/http.HttpResponse http.HttpResponse;importorg.apache. HYPERLINK http:/http.NameValuePair http.NameValuePair;importorg.apache. HYPERLINK http:/http.client.HttpClient http.client.HttpClient;importorg.apache. HYPERLINK h
6、ttp:/http.client.entity.UrlEncodedFormEntity http.client.entity.UrlEncodedFormEntity;importorg.apache. HYPERLINK http:/http.client.methods.HttpPost http.client.methods.HttpPost;importorg.apache. HYPERLINK http:/http.impl.client.DefaultHttpClient http.impl.client.DefaultHttpClient;importorg.apache. H
7、YPERLINK http:/http.message.BasicNameValuePair http.message.BasicNameValuePair;importorg.json.JSONException;importorg.json.JSONObject;17.publicclassBaseProtocolprivateStringBuildersb=newStringBuilder();20.privateHttpClienthttpClient;privateHttpPosthttpRequest;privateHttpResponseresponse;24.privateLi
8、stnameValuePair=newArrayList();26.BaseProtocol()httpClient=newDefaultHttpClient(); TOC o 1-5 h z 30./*向服務器端發送請求*paramurl*throwsException*/protectedvoidpack(Stringurl)throwsExceptionhttpClient=newDefaultHttpClient();httpRequest=newHttpPost(url);40.httpRequest.setEntity(newUrlEncodedFormEntity(nameVal
9、uePair);response=httpClient.execute(httpRequest); TOC o 1-5 h z 44./*得到返回數據*paramurl*return*throwsException*/protectedvoidparse()throwsException/TODO 狀態處理 500200if(response.getStatusLine().getStatusCode()=200)55.BufferedReaderbufferedReader2=newBufferedReader(newInputStreamReader(response.getEntity(
10、).getContent();for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2.readLine()sb.append(s); TOC o 1-5 h z 64./*向服務器發送信息*paramkey*paramvalue*/publicvoidaddNameValuePair(Stringkey,Stringvalue)nameValuePair.add(newBasicNameValuePair(key,value); TOC o 1-5 h z 74./*返回JSONObject對象數據模型*return*t
11、hrowsJSONException*/publicJSONObjectgetJSON()throwsJSONExceptionreturnnewJSONObject(sb.toString();84.86.tocol;88.importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.List;93.importorg.apache. HYPERLINK http:/http.HttpResponse http.HttpResponse;import
12、org.apache. HYPERLINK http:/http.NameValuePair http.NameValuePair;importorg.apache. HYPERLINK http:/http.client.HttpClient http.client.HttpClient;importorg.apache. HYPERLINK http:/http.client.entity.UrlEncodedFormEntity http.client.entity.UrlEncodedFormEntity;importorg.apache. HYPERLINK http:/http.c
13、lient.methods.HttpPost http.client.methods.HttpPost;importorg.apache. HYPERLINK http:/http.impl.client.DefaultHttpClient http.impl.client.DefaultHttpClient;100.importorg.apache. HYPERLINK http:/http.message.BasicNameValuePair http.message.BasicNameValuePair;101.importorg.json.JSONException;102.impor
14、torg.json.JSONObject;103.publicclassBaseProtocolprivateStringBuildersb=newStringBuilder();106.privateHttpClienthttpClient;privateHttpPosthttpRequest;privateHttpResponseresponse;110.privateListnameValuePair=newArrayList();112.BaseProtocol()httpClient=newDefaultHttpClient(); TOC o 1-5 h z 116./*向服務器端發
15、送請求*paramurl*throwsException*/protectedvoidpack(Stringurl)throwsExceptionhttpClient=newDefaultHttpClient();httpRequest=newHttpPost(url);126.httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair);response=httpClient.execute(httpRequest); TOC o 1-5 h z 130./*得到返回數據*paramurl*return*throwsExceptio
16、n*/protectedvoidparse()throwsException/TODO 狀態處理 500200if(response.getStatusLine().getStatusCode()=200)141.BufferedReaderbufferedReader2=newBufferedReader(newInputStreamReader(response.getEntity().getContent();for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2.readLine()sb.append(s); T
17、OC o 1-5 h z 150./*向服務器發送信息*paramkey*paramvalue*/publicvoidaddNameValuePair(Stringkey,Stringvalue)nameValuePair.add(newBasicNameValuePair(key,value);160./*返回JSONObject對象數據模型*return*throwsJSONException*/publicJSONObjectgetJSON()throwsJSONExceptionreturnnewJSONObject(sb.toString();170.接著是登陸協議,在這里我只是模擬
18、登陸使用的一個類,僅供大家參考:tocol;2.importorg.json.JSONObject;4.importcom.jclick.bean.User;6.publicclassLoginProtocolextendsBaseProtocol8.privatefinalstaticStringURL= HYPERLINK http:/localhost:8080/test/login http:/localhost:8080/test/login;10.publicbooleancheckLogin(Userusr)trypack(URL);parse();JSONObjectobj=t
19、his.getJSON();if(obj.getString(result).equals(failed)returnfalse;elsereturntrue; TOC o 1-5 h z catch(Exceptione)e.printStackTrace();returnfalse;26.28.tocol;30.importorg.json.JSONObject;32.importcom.jclick.bean.User;34.publicclassLoginProtocolextendsBaseProtocol36.privatefinalstaticStringURL= HYPERLI
20、NK http:/localhost:8080/test/login http:/localhost:8080/test/login;38.publicbooleancheckLogin(Userusr)trypack(URL);parse();JSONObjectobj=this.getJSON();if(obj.getString(result).equals(failed)returnfalse;elsereturntrue; TOC o 1-5 h z catch(Exceptione)e.printStackTrace();returnfalse;54.然后是User實體類,主要用于
21、保存用戶信息:packagecom.jclick.bean;2.publicclassUserprivateStringusername;privateStringpassword;publicStringgetUsername()returnusername; TOC o 1-5 h z publicvoidsetUsername(Stringusername)this .username=username;publicStringgetPassword()returnpassword;publicvoidsetPassword(Stringpassword)this.password=pa
22、ssword;18.20.packagecom.jclick.bean;22.publicclassUserprivateStringusername;privateStringpassword;publicStringgetUsername()returnusername; TOC o 1-5 h z publicvoidsetUsername(Stringusername)this .username=username;publicStringgetPassword()returnpassword;publicvoidsetPassword(Stringpassword)this.pass
23、word=password;38.最后就是LoginActivity里邊判斷登陸的代碼了,詳細代碼不再貼出來了,僅貼一個判斷登陸的代碼: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);Toast.makeText(getApplicationContext(),登錄成功,1000).show();Intentintent=newIntent();intent.setClass(LoginActivit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國粒度分析行業市場全景分析及前景機遇研判報告
- 2024年度浙江省護師類之主管護師模擬預測參考題庫及答案
- 2024年度浙江省二級造價工程師之建設工程造價管理基礎知識模考模擬試題(全優)
- 2024年度浙江省二級造價工程師之土建建設工程計量與計價實務提升訓練試卷A卷附答案
- 中醫超聲波治療的應用與發展
- 腫瘤病人護理常識培訓
- DB43-T 2877-2023 棉鈴蟲齒唇姬蜂人工繁育技術規程
- 交警執法藝術培訓
- 模具課程培訓課件
- 幼兒園小班圣誕節繪本故事課件
- 2024年湖南省公安廳招聘警務輔助人員筆試真題
- 弘揚中國精神的課件
- 2025江蘇揚州寶應縣“鄉村振興青年人才”招聘67人筆試備考題庫及完整答案詳解一套
- 云南省玉溪市2023-2024學年高二下學期期末教學質量檢測語文試卷(含答案)
- 撫州市樂安縣招聘城市社區工作者筆試真題2024
- 網絡服務器配置與管理(微課版) 教案 項目02 虛擬化技術和VMware-2
- 2025年西式面點師(中級)面包烘焙實操考試試卷
- T/CAPEC 3-2018汽輪機制造監理技術要求
- 工程完工后的回訪與保修服務承諾
- 拖欠房租分期協議書
- 醫療質量管理質控科的未來發展趨勢與挑戰
評論
0/150
提交評論