zoukankan      html  css  js  c++  java
  • Android中使用webservice验证用户登录的示例

               前段时间做了2个Android方面的项目,现在想抽空对其中的有些知识点进行下总结,也算进一步的学习了。

               由于开发手机客户端一般都要和服务器打交道,因此用户的登录验证在一般的应用中都少不了。因而我将以前做的项目中的使用webservice验证的这块

    单独写出来了。我们的手机应用的服务器端采用的是Asp.net开发的,因而webservice的开发也是用C#开发的,发布在IIS上的。

               在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService。PC版本的WebService库非常丰富,但这些对Android来说过于庞大。适合手机的WebService客户端的SDK有一些,比较常用的是KSOAP2。

    KSOAP2 地址:http://code.google.com/p/ksoap2-android/

    我们在项目中使用的是: ksoap2-android-assembly-2.4-jar-with-dependencies.jar。

              在项目中引用KSOAP2后,我们就要引入下面几个包了:

    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;

    然后我们就要编写调用验证用户登录的方法,并在其中调用webservice方法了,代码如下:

    public String GetUserWS(String methodName, String[] parameterList) {
            // 创建SoapObject对象,并指定WebService的命名空间和调用的方法名
            SoapObject request = new SoapObject(Config.NAMESPACE, methodName);
            // 调用的函数如果有参数,这里可以设置需要传递的参数 注意:第一个参数使用arg0 多个参数依次类推 arg1,arg2...
            if (parameterList != null) {
                // for (int i = 0; i < parameterList.length; i++) {
                request.addProperty("key", parameterList[0]);
                request.addProperty("userName", parameterList[1]);
                request.addProperty("passWord", parameterList[2]);

                // }
            }

            // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
            // envelope.setOutputSoapObject(request);
            // 上边的一句等价于下边的这句 将SoapObject对象赋给envelope对象
            envelope.bodyOut = request;
            // 当前开发的是.net WS 这里需要不调用Java WS
            envelope.dotNet = true;

            /*
             * 这里不要使用 AndroidHttpTransport ht = new AndroidHttpTransport(URL);
             * 这是一个要过期的类
             * 创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL
             */

             //这里的SOAP_GETUSERINFOACTION = "http://172.16.xx.xxx:3366/Service/EWineService.asmx?op=Mobile_GetUserInfo";
            HttpTransportSE ht = new HttpTransportSE(Config.SOAP_GETUSERINFOACTION);

            try {
                // 请求WS
                ht.call(Config.SOAP_ACTION, envelope);
                if (envelope.getResponse() != null) {
                    // 获得WS函数返回值信息
                    // System.out.println(envelope.getResponse().toString());
                    Log.d("wine", "GetUserWS Result:"
                            + envelope.getResponse().toString());
                    return envelope.getResponse().toString();
                }

            } catch (Exception e) {
                e.printStackTrace();
                System.out.println(e.getMessage());
                Log.d("wine", "GetUserWS Error:" + e.getMessage());
            }
            return null;
        }


    具体的调用代码如下:

                    // 点确定按钮所执行的东东
                    String[] parameterList = new String[3];
                    parameterList[0] = LOGINKEY;
                    parameterList[1] = TxtUser.getText().toString();
                    parameterList[2] = TxtPassword.getText().toString();

                    //注意Config.METHOD_GETUSERINFO是具体调用的webservice中方法名,例如:METHOD_GETUSERINFO = "Mobile_GetUserInfo";
                    // 调用webService
                    String strRemoteInfo = GetUserWS(Config.METHOD_GETUSERINFO,
                            parameterList);





  • 相关阅读:
    java接口对入参的判断校验
    sqlyog使用技巧
    mysql 数据库的表中复制一条数据并添加到该表中
    union all ,union 注意事项,查询结果集中的字段名称顺序必须一致
    IDEA连接mysq数据库,其实很简单
    git版本回退、git远程分支管理、git本地分支管理、git生产代码bug修复
    Vue上拉加载下拉刷新---vue-easyrefresh
    Flutter上拉加载下拉刷新---flutter_easyrefresh
    vue-cli webpack多Html页面的配置(附框架vue-webpack-multipage实例)
    Qt使用镜像源快速安装与更新
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2482122.html
Copyright © 2011-2022 走看看