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

来源:互联网 发布:电影收藏软件 编辑:程序博客网 时间:2024/06/06 15:35
 

From:http://blog.csdn.net/qq_35114086/article/details/52132034

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:""账号和密码不一致""}


[mw_shl_code=java,true]
    /*用户登陆
     * 服务器检测用户的账号和密码是否一致,并返回结果
     * */
    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;
    }[/mw_shl_code]



2.2 注册接口实现

接口定义:

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

反馈json格式:

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




[mw_shl_code=java,true] 

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;
    }[/mw_shl_code]
0 0