1. android傳輸方案分析和選型
在談到android 傳輸方案,通常你們想到的就是 Socket傳輸,基於http的web服務,還有直接是http的post,get獲取方式。
接下來是從 【網絡實現條件】,【使用範圍】, 【傳輸優缺點】, 【傳輸數據格式】,【綜合開發成本】,【應用複雜度】等角度分析這三種傳輸方式,作爲選擇的判斷條件。
下面是我對這三種傳輸方式的分析。
java
Socket傳輸 | Web服務 | Post,get獲取數據方式 | |
網絡實現條件 | 端口:特定端口協議:TCP,UDP(目前無線網絡非80端口的支持度低。目前移動夢網只支持wap和http協議) | 端口 80協議是http | 端口 80協議是http |
使用範圍 | 數據量大,格式簡單,且實時性要求高的傳輸 | 標準的Web服務接口,接口固定 | http形式,接口固定 |
傳輸優缺點 | 速度快,數據量小 | 速度通常,數據量大 | 速度通常,數據量通常 |
傳輸格式 | 自定義數據格式 | SOAP | Json |
開發要求 | 客戶端和服務器端:數據拼接,解析,數據完整驗證開發人員技術要求高 | 客戶端:使用第三方web服務組件,拼接參數,解析回饋數據,過程複雜。服務器端:建立web服務 開發人員技術要求:通常 | 客戶端:直接調用android自帶的json包解析json數據。過程簡單服務器端:生成基於httpHandler的ashx文件接口開發人員的技術要求:低 |
綜合成本 | 高 | 通常 | 低 |
2 登錄和註冊兩個接口實現
2.1 登錄接口實現
Java代碼:android
/*用戶登錄 * 服務器檢測用戶的帳號和密碼是否一致,並返回結果 * */ public static Boolean Login(String Account ,String PassWord) { //Step One 從服務器接口中獲取當前帳號和密碼的配對狀況 Boolean actionResult=false; String httpUrl="http://221.181.127.43/gointel/UserHandler.ashx?Action=login&Account="+Account+"&PassWord="+PassWord; //httpGet 鏈接對象 HttpGet httpRequest =new HttpGet(httpUrl); try { //取得HttpClinet對象 HttpClient httpclient=new DefaultHttpClient(); // 請求HttpClient,取得HttpResponse HttpResponse httpResponse=httpclient.execute(httpRequest); //請求成功 if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK) { //取得返回的字符串 String strResult=EntityUtils.toString(httpResponse.getEntity()); JSONObject jsonObject = new JSONObject(strResult) ; //獲取返回值,並判斷是否正確 actionResult=jsonObject.getBoolean("ActionResult"); } } catch(Exception e) { return false; } return actionResult; }
2.2 註冊接口實現web
public static Boolean Register(String account, String passWord, String niceName) { Boolean actionResult=false; String httpUrl="http://221.181.127.43/gointel/UserHandler.ashx?Action=register&Account="+account+"&PassWord="+passWord+"&NiceName="+niceName; //httpGet 鏈接對象 HttpGet httpRequest =new HttpGet(httpUrl); try { //取得HttpClinet對象 HttpClient httpclient=new DefaultHttpClient(); // 請求HttpClient,取得HttpResponse HttpResponse httpResponse=httpclient.execute(httpRequest); //請求成功 if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK) { //取得返回的字符串 String strResult=EntityUtils.toString(httpResponse.getEntity()); JSONObject jsonObject = new JSONObject(strResult) ; //獲取返回值,並判斷是否正確 actionResult=jsonObject.getBoolean("ActionResult"); } } catch(Exception e) { return false; } return actionResult; }
Java代碼:json