Android手機客戶端和服務器交互開發實例_第1頁
Android手機客戶端和服務器交互開發實例_第2頁
Android手機客戶端和服務器交互開發實例_第3頁
Android手機客戶端和服務器交互開發實例_第4頁
Android手機客戶端和服務器交互開發實例_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本文介紹了如何使用Android搭建客戶端,實現手機和服務器的交互。讓我們了解如何采用SSH框架,把服務器端的信息用JSON的形式發送到手機端。AD:筆者以前是學的JavaEE,由于項目需要要開發Android,所以臨時補了一個多星期,主要是手機端和服務器端交互,雙向開發的。首先在服務器端,我采用的是SSH框架,struts2集合了JSON插件,服務器和客戶端的信息交互采用的JSON來傳輸,由于在服務器端用了Struts2,所以我就用裝了一個JSON插件。這樣,很輕易的就把服務器端的信息用JSON的形式發送到了手機端。以下是代碼:首先,在服務器端搭建好SSH框架,具體細節就不在陳述。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>手機端的代碼如下:首先,手機端有一個緩存類,主要用于緩存一些手機端需要訪問的數據,這樣的好處是可以達達節省手機和服務器的交互,用單例實現的:1.packagecom.jclick.cache;2.importcom.jclick.bean.User;4.publicclassCache{6.privateUserUser;8.9.privateCache(){10.}/**構造單例*/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.}/**構造單例*/privatestaticclassCacheHolder{privatestaticfinalCacheINSTANCE=newCache();}publicCachegetInstance(){returnCacheHolder.INSTANCE;}publicUsergetUser(){returnUser;}publicvoidsetUser(UserUser){this.User=User;}52.53.接著開始書寫手機端的協議,用戶向服務器發送請求,同時服務器反饋給手機端信息的: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./***向服務器端發送請求**@paramurl*@throwsException*/protectedvoidpack(Stringurl)throwsException{httpClient=newDefaultHttpClient();httpRequest=newHttpPost(url);40.httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));response=httpClient.execute(httpRequest);}44./***得到返回數據**@paramurl*@return*@throwsException*/protectedvoidparse()throwsException{//TODO狀態處理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./***向服務器發送信息**@paramkey*@paramvalue*/

00022.123.124.publicvoidaddNameValuePair(Stringkey,Stringvalue){nameValuePair.add(newBasicNameValuePair(key,value));}/***返回JSONObject對象數據模型**@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();}/***向服務器端發送請求**@paramurl*@throwsException*/protectedvoidpack(Stringurl)throwsException{httpClient=newDefaultHttpClient();

httpRequest=newHttpPost(url);httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));response=httpClient.execute(httpRequest);}/***得到返回數據**@paramurl*@return*@throwsException*/protectedvoidparse()throwsException{//TODO狀態處理500200if(response.getStatusLine().getStatusCode()==200){BufferedReaderbufferedReader2=newBufferedReader(newInputStreamReader(response.getEntity().getContent()));for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2.readLine()){sb.append(s);}}}/***向服務器發送信息**@paramkey*@paramvalue*/publicvoidaddNameValuePair(Stringkey,Stringvalue){nameValuePair.add(newBasicNameValuePair(key,value));}/***返回JSONObject對象數據模型**@return*@throwsJSONException*/publicJSONObjectgetJSON()throwsJSONException{returnnewJSONObject(sb.toString());}接著是登陸協議,在這里我只是模擬登陸使用的一個類,僅供大家參考: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實體類,主要用于保存用戶信息: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里邊判斷登陸的代碼了,詳細代碼不再貼出來了,僅貼一個判斷登陸的代碼: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論