如何使用KSOAP Android库对webservice进行身份验证

时间:2013-10-03 09:01:21

标签: android ksoap2

我正在理解android编程,我只是想创建一个关于如何从Android应用程序调用基于SOAP的Web服务的简单POC。

根据我的阅读材料,我可以使用此库KSOAP2

我还没有完成严格的编码,但我想知道如何使用这个库实现身份验证。

在我在网上看到的示例中,几乎所有示例都没有身份验证机制。如果我的Web服务需要身份验证(例如用户标识/密码),那么如何使用此库传递它。

只想开始领先。感谢

1 个答案:

答案 0 :(得分:0)

关于你的问题的第二部分,我的网络服务是在vb.net中,需要用户名和密码,所以我有一个处理它的web方法。这是处理它的android端...还有一个适配器但是Ill让你得到那个部分。

public Account getAccountFromWebservice() {

    SOAP_ACTION = "getAccount";
    METHOD_NAME = "getAccount";

    SoapObject Request = new SoapObject(Data.NAMESPACE, METHOD_NAME);

    String username = "name";
    String password = "something";



    PropertyInfo username = new PropertyInfo();
    username .setName("username ");
    username .setValue(username);
    Request.addProperty(username );



    PropertyInfo password = new PropertyInfo();
    password.setName("password ");
    password.setValue(password );
    Request.addProperty(password );

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(Request);

    HttpTransportSE HttpTransport = new HttpTransportSE(Data.URL);

    try {
        HttpTransport.call(SOAP_ACTION, envelope);
        SoapObject response = (SoapObject) envelope.getResponse();

        for (int i = 0; i < response.getPropertyCount(); i++) {
            account.setProperty(i, response.getProperty(i).toString());

        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return account;

}

这里是.net webervice方法的一部分

        public Accounts[] getAccounts(String username, String password)
    {
        strSQL = "dbo.danceworks_getAccounts";
        SqlParameter[] sp = new SqlParameter[2];
        sp[0] = new SqlParameter("@username", username);
        sp[1] = new SqlParameter("@password", password);



        DatabaseCore dc = new DatabaseCore();

        DataSet ds = new DataSet();
        ds = dc.ExecSPReturnDS(strSQL, sp);

        Accounts[] account= new Accounts[ds.Tables[0].Rows.Count];
        int i;
        for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
        {
            account[i] = new Accounts();
            Accounts[i].add the various fields for an account object
        }

        return Classes;
    }

希望有所帮助