(android實戰系統二)Android網路互動傳輸方案選擇和實現

來源:互聯網
上載者:User

前言:

在前面介紹過基於對話方塊形式,實現登陸和註冊帳號,沒有細說Android終端和互連網的服務之間的互動實現,

在下面我將說明在在選擇Android傳輸的方案選型分析過程,登陸和註冊介面定義和實現.

1  android傳輸方案分析和選型

在談到android 傳輸方案,一般大家想到的就是
Socket傳輸,基於http的web服務,還有直接是http的post,get擷取方式。

接下來是從 【網路實現條件】,【使用範圍】, 【傳輸優缺點】, 【傳輸資料格式】,【綜合開發成本】,【應用複雜度】等角度分析這三種傳輸方式,做為選擇的判斷條件。

下面是我對這三種傳輸方式的分析。

Socket傳輸

Web服務

Post,get擷取資料方式

網路實現條件

連接埠:特定連接埠

協議:TCP,UDP

(目前無線網路非80連接埠的支援度低。目前移動夢網只支援wap和http協議)

連接埠 80

協議是http

連接埠 80

協議是http

使用範圍

資料量大,格式簡單,且即時性要求高的傳輸

標準的Web服務介面,介面固定

http形式,介面固定

傳輸優缺點

速度快,資料量小

速度一般,資料量大

速度一般,資料量一般

傳輸格式

自訂資料格式

SOAP

Json

開發要求

用戶端和伺服器端:資料拼接,解析,資料完整驗證

開發人員技術要求高

用戶端:使用第三方web服務元件,拼接參數,解析回饋資料,過程複雜。

伺服器端:建立web服務

開發人員技術要求:一般

用戶端:直接調用android內建的json包解析json資料。過程簡單

伺服器端:產生基於httpHandler的ashx檔案介面

開發人員的技術要求:低

綜合成本

一般

綜合以上分析:選擇json+httphandler 的傳輸方式

2  登陸和註冊兩個介面實現

2.1 登陸介面實現

   介面定義

  http://192.168.1.1/gointel/UserHandler.ashx?Action=login&Account=xuwenbing&PassWord=xuwenbing

反饋的json格式:

{ActionResult:false,Reason:""帳號和密碼不一致""}

源碼:

 

View Code

    /*使用者登陸
* 伺服器檢測使用者的帳號和密碼是否一致,並返回結果
* */
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 註冊介面實現

 介面定義:

http://192.168.1.1/gointel/UserHandler.ashx?Action=register&Account=xuwenbing&PassWord=xxuwenbin&NiceName=ninilan;

反饋json格式:

{ActionResult:false,Reason:""使用者名稱已存在""}

源碼:

View Code

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;
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.