




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本文介紹了如何使用Android搭建客戶端,實(shí)現(xiàn)手機(jī)和服務(wù)器的交互。讓我們了解如何采用SSH框架,把服務(wù)器端的信息用JSON的形式發(fā)送到手機(jī)端。AD:筆者以前是學(xué)的JavaEE,由于項目需要要開發(fā)Android,所以臨時補(bǔ)了一個多星期,主要是手機(jī)端和服務(wù)器端交互,雙向開發(fā)的。首先在服務(wù)器端,我采用的是SSH框架,struts2集合了JSON插件,服務(wù)器和客戶端的信息交互采用的JSON來傳輸,由于在服務(wù)器端用了Struts2,所以我就用裝了一個JSON插件。這樣,很輕易的就把服務(wù)器端的信息用JSON的形式發(fā)送到了手機(jī)端。以下是代碼:首先,在服務(wù)器端搭建好SSH框架,具體細(xì)節(jié)就不在陳述。struts.xml配置如下:<packagename="login"extends="json-default"><actionname="login"class="com.jclick.test.LoginAction"method="login"><resulttype="json"><paramname="includeProperties">result</param></result></action>5. </package>6.<packagename="login"extends="json-default"><actionname="login"class="com.jclick.test.LoginAction"method="login"><resulttype="json"><paramname="includeProperties">result</param></result></action>11. </package>手機(jī)端的代碼如下:首先,手機(jī)端有一個緩存類,主要用于緩存一些手機(jī)端需要訪問的數(shù)據(jù),這樣的好處是可以達(dá)達(dá)節(jié)省手機(jī)和服務(wù)器的交互,用單例實(shí)現(xiàn)的:1.packagecom.jclick.cache;2.importcom.jclick.bean.User;4.publicclassCache{6.privateUserUser;8.9.privateCache(){10.}/**構(gòu)造單例*/privatestaticclassCacheHolder{privatestaticfinalCacheINSTANCE=newCache();}publicCachegetInstance(){returnCacheHolder.INSTANCE;}publicUsergetUser(){
returnUser;}publicvoidsetUser(UserUser){this.User=User;}25.}27.28.packagecom.jclick.cache;29.importcom.jclick.bean.User;31.32.publicclassCache{33.34.privateUserUser;35.36.privateCache(){9.50.51.}/**構(gòu)造單例*/privatestaticclassCacheHolder{privatestaticfinalCacheINSTANCE=newCache();}publicCachegetInstance(){returnCacheHolder.INSTANCE;}publicUsergetUser(){returnUser;}publicvoidsetUser(UserUser){this.User=User;}52.53.接著開始書寫手機(jī)端的協(xié)議,用戶向服務(wù)器發(fā)送請求,同時服務(wù)器反饋給手機(jī)端信息的:1.tocol;2.3.importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.List;7.importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.client.HttpClient;importorg.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;17.18.publicclassBaseProtocol{19.privateStringBuildersb=newStringBuilder();20.privateHttpClienthttpClient;privateHttpPosthttpRequest;privateHttpResponseresponse;24.privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();26.BaseProtocol(){httpClient=newDefaultHttpClient();}30./***向服務(wù)器端發(fā)送請求**@paramurl*@throwsException*/protectedvoidpack(Stringurl)throwsException{httpClient=newDefaultHttpClient();httpRequest=newHttpPost(url);40.httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));response=httpClient.execute(httpRequest);}44./***得到返回數(shù)據(jù)**@paramurl*@return*@throwsException*/protectedvoidparse()throwsException{//TODO狀態(tài)處理500200if(response.getStatusLine().getStatusCode()==200){55.BufferedReaderbufferedReader2=newBufferedReader(newInputStreamReader(response.getEntity().getContent()));for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2.readLine()){sb.append(s);}}}64./***向服務(wù)器發(fā)送信息**@paramkey*@paramvalue*/
00022.123.124.publicvoidaddNameValuePair(Stringkey,Stringvalue){nameValuePair.add(newBasicNameValuePair(key,value));}/***返回JSONObject對象數(shù)據(jù)模型**@return*@throwsJSONException*/publicJSONObjectgetJSON()throwsJSONException{returnnewJSONObject(sb.toString());}}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;importorg.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{privateStringBuildersb=newStringBuilder();privateHttpClienthttpClient;privateHttpPosthttpRequest;privateHttpResponseresponse;privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();BaseProtocol(){httpClient=newDefaultHttpClient();}/***向服務(wù)器端發(fā)送請求**@paramurl*@throwsException*/protectedvoidpack(Stringurl)throwsException{httpClient=newDefaultHttpClient();
httpRequest=newHttpPost(url);httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));response=httpClient.execute(httpRequest);}/***得到返回數(shù)據(jù)**@paramurl*@return*@throwsException*/protectedvoidparse()throwsException{//TODO狀態(tài)處理500200if(response.getStatusLine().getStatusCode()==200){BufferedReaderbufferedReader2=newBufferedReader(newInputStreamReader(response.getEntity().getContent()));for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2.readLine()){sb.append(s);}}}/***向服務(wù)器發(fā)送信息**@paramkey*@paramvalue*/publicvoidaddNameValuePair(Stringkey,Stringvalue){nameValuePair.add(newBasicNameValuePair(key,value));}/***返回JSONObject對象數(shù)據(jù)模型**@return*@throwsJSONException*/publicJSONObjectgetJSON()throwsJSONException{returnnewJSONObject(sb.toString());}接著是登陸協(xié)議,在這里我只是模擬登陸使用的一個類,僅供大家參考:tocol;69.170.171.}importorg.json.JSONObject;.3.54.55.importcom.jclick.bean.User;publicclassLoginProtocolextendsBaseProtocol{privatefinalstaticStringURL="http://localhost:8080/test/login";publicbooleancheckLogin(Userusr){try{pack(URL);parse();JSONObjectobj=this.getJSON();if(obj.getString("result").equals("failed")){returnfalse;}else{returntrue;}}catch(Exceptione){e.printStackTrace();returnfalse;}}}tocol;importorg.json.JSONObject;importcom.jclick.bean.User;publicclassLoginProtocolextendsBaseProtocol{privatefinalstaticStringURL="http://localhost:8080/test/login";publicbooleancheckLogin(Userusr){try{pack(URL);parse();JSONObjectobj=this.getJSON();if(obj.getString("result").equals("failed")){returnfalse;}else{returntrue;}}catch(Exceptione){e.printStackTrace();returnfalse;}}}
然后是User實(shí)體類,主要用于保存用戶信息:1.packagecom.jclick.bean;2.3.publicclassUser{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}18.}20.21.packagecom.jclick.bean;5.36.37.publicclassUser{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}38.39.最后就是LoginActivity里邊判斷登陸的代碼了,詳細(xì)代碼不再貼出來了,僅貼一個判斷登陸的代碼:1.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);Toas
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 墻地磚合同范本
- 全書定制合同范本
- 單位電腦采購合同范本
- 單位與保安合同范本
- 個人投資合伙合同范本
- 修路轉(zhuǎn)讓合同范例
- 入圍合同范本
- 做線上合同范本
- 麻城外包型鋼加固施工方案
- 乙方多個公司合同范本
- 10我們所了解的環(huán)境污染 (教學(xué)設(shè)計)2023-2024學(xué)年統(tǒng)編版道德與法治四年級上冊
- 2025中國煙草/中煙工業(yè)招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 新教科版小學(xué)科學(xué)三年級下冊教案(全冊)
- 2025小學(xué)語文一年級下冊第二單元教學(xué)課件匯編(配套新教材)
- 天津2025年天津中德應(yīng)用技術(shù)大學(xué)輔導(dǎo)員崗位招聘7人筆試歷年參考題庫附帶答案詳解
- 2025年湘西民族職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年海南職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 北京市西城區(qū)2024-2025學(xué)年高三上學(xué)期期末考試語文試題(解析版)
- 2025年湖南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 部編人教版道德與法治九年級下冊全冊課件
- 《新能源發(fā)電技術(shù)第2版》 課件全套 朱永強(qiáng) 第1-10章 能源概述- 分布式發(fā)電與能源互補(bǔ)
評論
0/150
提交評論