Android客户端用户在线验证附带webservice的部署

     Android客户端的在线验证,登陆是很多需要保密的应用程序的必要环节,本人菜鸟经过几天的摸索,终于完成的小小的程序:通过Android客户端调用webservice。具体步骤写出共同交流学习。由于本人也是菜鸟,在这之前完全没学过webservice,代码很简单。


一,服务器端webservice的建立

没了客户端发布的程序,哪来的调用,所以服务器端的程序少不了,客户端的代码只有几句,只是小小的验证并返回我们需要的结果

这里我选用了visual stuio 2010 (VS)版本,网上有很多教程可以参考

由于我们调用的是webservice服务,打开VS通过文件——新建——网站

在出现的新建网站对话框中按所需语言(这里选C#)选择,并选择ASP.NET网站(图1

注意.NET版本的选择(版本的影响自己搜),web位置的填写

 

网站建立好后,我们给项目添加一个新项(如下图2)并重新命名为webservice.asmx

2

 

打开新建项,其他的先不要管,按照原有的HelloWorld方法建立自己所需方法,这里是一个简单的用户验证,代码就这么多,(单个用户的验证够了)(图3

3

保存好之后,回头分析一下里面的内容,里面有之后要用到的内容

[WebService(Namespace ="http://tempuri.org/")]这个是本项目的命名空间,由于只是测试,命名空间不规范,另外还有所需的方法名Login(String,String);

到这一个简单的webservice项目就已经建立完成了

 

 

二、将 webservice项目部署到服务器的IIS

这里所用的服务器是windows server 2008

打开Internet信息服务(IIS)管理器(图4


在右边选项栏中由选网站——新建网站——配置网站的默认文件地址,端口等,配置如下图5

 

这里的网站是Test,然后选中已经建立好的网站右击选择添加虚拟目录,命名一个别名(这里用Usercheck),物理路径选择你之前写好的webwervice项目的所在目录。

之后更该默认文档为WebService2.asmx,最后将你添加的虚拟目录转换为应用程序。

现在就可以进行一下验证了,单击右边选项栏中的浏览可以在浏览器中查看

我们之前写的方法出现了 helloworld是建立网站项目的时候自带的没删除,login是我们自己写的小示例,点击login进入验证如下图

 

 

输入namepassword(注意之前定义的正确的验证是admin&123)进行验证。点击严重页面跳转出现返回值

 

好了 服务器端的程序已经完成了,例子很简单,代码不多,主要是对于webservice的建立与部署。

 

三、android客户端的调用

 

客户端的程序很简单,布置了两个Activity,第一个Activity是登陆界面,第二个是完成登陆验证后的跳转界面(注意两个Activity都要在配置文件中说明),布局如下图,布局代码就不贴了 很简单.但有一点很重要 一定要引入第三方的jar包 Ksoap2-android-**** ,这个在网上可以下载


核心代码如下 主要出现的问题是要注意返回值的类型,代码中有注释说明,目前还有问题没解决

 

      **      

      StringNAMESPACE=http://tempuri.org/;//看到没 在服务器端写的网站项目的命名空间在这用到了,

      StringMETHOD_NAME="login";//要调用的方法,必须和服务器端写的方法一致

      StringURL=http://192.168.***.***:180/Usercheck/UserService.asmx;

      **        

          *     

          //指定WebService的命名空间和调用的方法名

          SoapObject request =new SoapObject(NAMESPACE,METHOD_NAME);             

          //处理soap12:Body数据部分

          request.addProperty("name", userName);

          request.addProperty("password", password);

             

          //SoapEnvelope.VER11表示使用的soap协议的版本号 1.1 或者是1.2

          SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11);

          envelope.bodyOut = request;

          envelope.dotNet =true;//指定webservice的类型的(javaPHPdotNet

          envelope.setOutputSoapObject(request);

 

          HttpTransportSE ht =new HttpTransportSE(URL);

          ht.debug =true; 

          try { 

             //访问webservice服务器

             ht.call(NAMESPACE+METHOD_NAME, envelope);

             

             /*

              *不同的接收方式其得到的返回值不同,

              *若用SoapObject object=(SoapObject) envelope.bodyIn;其返回值格式是:   loginResponse{loginResult=1;}

              *若用Object object=(Object)envelope.getResponse();其返回值格式是: 1

              *若用SoapObject object=(SoapObject)envelope.getResponse()出现程序崩溃现象  待解决

              * */

//           object=(SoapObject) envelope.bodyIn;

//           object=(SoapObject)envelope.getResponse();

             object=(Object)envelope.getResponse();

             

          }catch (Exception e) {           

             e.printStackTrace();           

          }         

          loginStateStr=object.toString();         

          returnloginStateStr;   

          /*

           *之后就是对返回结果值得解析,并进行相应的处理

           */

    

  

以上就是客户端的代码,目前还有一个问题是SoapObject object=(SoapObject)envelope.getResponse()的方式接受返回值是出现程序崩溃现象,接待解决,请各位大婶指教


到此整个服务器端和客户端的代码和部署就全部完成了,代码很少,示例很小,但毕竟是花了自己几天时间摸索出来的贴出来求指教。


发布了12 篇原创文章 · 获赞 5 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章