Android 用户远程验证----XFIRE,BASE64,KSOAP,WEBSERVICE

  在Android开发过程中,不一定都用本地文件系统或本地数据库SQLite,比如QQ,用户的帐号数据都存储远程服务器上。而访问远程数据库有很多种方式,比如HTTPCLIENT,WEBSERVICE,SOCKET等多种方式,即分别为http通信,webservice(Web服务通信),还有socket套接字通信等等,限于篇幅,本文我只讲解讲一下webservice方式。其他方式,在其他的文档在讲。

 

第一步,在要android中使用web服务,我们得先配置好web服务 器端。我使用了java webservice---XFIRE框架。

相信XFire的优点不用多说,google,百度一下就知道了。我这里主要讲解配置过程。配置一个简单的webservice,相信配置了该webservice。

 

xfire使用接口和接口实现类来实现远程方法提拱。这样可以将接口公布给客户端,但android提拱了ksoap框架类,一种全新的实现方式,就不需要使用远程接口。只要配置好相关参数和方法即可。

 

废话不多说了,帖上代码:

 

这个是接口类,再帖出实现类。

 

下面我着重讲一下login方法,它里面有两个类提拱方法以实现其功能。

Base64算法相信大家都比较熟悉吧,dt.jar已经提拱了具体的实现细节。你可以查阅相关文档和源码,

这里为了让大家费时费力,我贴上代码。

 

 

这段代码可以也可以在Android客户端重用,Android端负责加密码,而XFire服务器端负责解密,这样做是为了安全性着想。

你想想如果不加密码,直接将帐号和密码在网络上传输,裸露在Internet中,那是多么的危险,这是用了通用的Base64加密解密码算法也不一定安全。我只是做一个试笵,大家可以根据自已需要来选用自已的加密码算法。比如md5,SHA等等。

 

 

还有就是访问数据库的细节,在这里只用了原始了JDBC,当然可以扩展成Hibernate,iBatis.为求简单原始。帖上如下代码:

 

不用多说,地球都可以看懂它们。呵呵。

 

 

当然要将这个类中的方法发布出去还要有Services.xml文件,这个文件的存储路径为:WebServices目录下。即项目的根目录下面。

代码如下所示:

我为了简单,写只了一个MyService服务。你可以根据自已需要添加其他的服务。

 

当然运行这个还要有一些JAR包的支持。我附图,如下所示:

 

布署这个webservice,很简单,就像布署web project一样布署即可。然后运行一下web服务器(tomcat),如下所示:

 

 

这样Web service就发布成功了。我们可以看到login方法。

 

接下来我们看看Android客户端。要使用webservice框架,我们要在classpath中导入D:/学习专题/Android专题/Android例程专题(自定收集)/Android WebService/android/android webservice/ksoap2_android_src.zip。

 

这样才可以运行webservice

 

贴上代码:

 

 

可以看到Base64又在这里出现了,主要是为了加密码,然后传送给服务器端

 

 

注意:private static final String WSDL = "http://10.10.178.70:8888/WSDLApp/services/MyService";

而不要在后面加上?wsdl,如果加上了就错误了。

 

里面的代码。你可以下载源码进行解读。

我来提一点两种方式获得:result

 

HttpTransportSE httpTranstation=new HttpTransportSE(WSDL);
        //或者AndroidHttpTransport httpTranstation = new AndroidHttpTransport(WSDL);

 

 

这两种都可以

 

 

然后还有

 


            httpTranstation.call(targetNameSpace + getLogin, envelope);
            SoapObject  result = (SoapObject ) envelope.bodyIn;//getResponse();
            //
           
            str=(String) result.getProperty(0).toString();
           
              //  也可以通过下面方式获得str
             //  SoapPrimitive  result = (SoapPrimitive ) envelope.getResponse();
            //    str=result.toString();
           //   直指value字符串值

 

 

这两种方式,我在测试的过程中都通过。提拱多种方式,让程序员灵活使用。

 

下面我贴上Activity子类MainActivity

 

 

最终运行效果如下所示:

有点小问题,可以在开发中更正。

 

最终不要忘了加 internet permmition  

 

AndroidManifest.xml中加入<uses-permission android:name="android.permission.INTERNET" />

 

 

 



 

 

 

 

 

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值