2

我正在特别了解 android 编程,我只想创建一个简单的 POC,说明如何从 android 应用程序调用基于 SOAP 的 Web 服务。

根据我的阅读,我可以使用这个库KSOAP2

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

在网上看到的例子中,几乎都没有认证机制。如果我的 Web 服务需要身份验证,例如用户名/密码,那么我如何使用这个库传递它。

只是想要一个线索开始。谢谢

4

1 回答 1

0

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

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;
    }

希望有帮助

于 2013-11-05T20:23:34.793 回答