Android手機(jī)客戶端和服務(wù)器交互開發(fā)實(shí)例_第1頁
Android手機(jī)客戶端和服務(wù)器交互開發(fā)實(shí)例_第2頁
Android手機(jī)客戶端和服務(wù)器交互開發(fā)實(shí)例_第3頁
Android手機(jī)客戶端和服務(wù)器交互開發(fā)實(shí)例_第4頁
Android手機(jī)客戶端和服務(wù)器交互開發(fā)實(shí)例_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論