Android中使用webservice驗證使用者登入的樣本

來源:互聯網
上載者:User

           前段時間做了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);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.