android三种传输方案分析+一个注册登录例子

来源:互联网 发布:ubuntu mp3播放器推荐 编辑:程序博客网 时间:2024/05/20 20:43

1:三种传输方式的分析。


 
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/UserH ... ;PassWord=xuwenbing

反馈的json格式:

{ActionResult:false,Reason:""账号和密码不一致""}


?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
   /*用户登陆
     * 服务器检测用户的账号和密码是否一致,并返回结果
     * */
   publicstatic 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 =newHttpGet(httpUrl);
         
        try
        {
            //取得HttpClinet对象
            HttpClient httpclient=newDefaultHttpClient();
             
            // 请求HttpClient,取得HttpResponse
            HttpResponse  httpResponse=httpclient.execute(httpRequest);
             
            //请求成功
            if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK)
            {
                //取得返回的字符串
                String strResult=EntityUtils.toString(httpResponse.getEntity());
                 
                JSONObject jsonObject = newJSONObject(strResult) ;
                //获取返回值,并判断是否正确
                actionResult=jsonObject.getBoolean("ActionResult");
            }
        }
        catch(Exception e)
        {
            returnfalse;
             
        }
        returnactionResult;
   }




2.2 注册接口实现

接口定义:

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

反馈json格式:

{ActionResult:false,Reason:""用户名已存在""}




?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
publicstatic 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 =newHttpGet(httpUrl);
          
        try
        {
            //取得HttpClinet对象
            HttpClient httpclient=newDefaultHttpClient();
             
            // 请求HttpClient,取得HttpResponse
            HttpResponse  httpResponse=httpclient.execute(httpRequest);
             
            //请求成功
            if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK)
            {
                //取得返回的字符串
                String strResult=EntityUtils.toString(httpResponse.getEntity());
                 
                JSONObject jsonObject = newJSONObject(strResult) ;
         
                //获取返回值,并判断是否正确
                actionResult=jsonObject.getBoolean("ActionResult");
            }
        }
        catch(Exception e)
        {
            returnfalse;
             
        }
        returnactionResult;
   }