我正在特别了解 android 编程,我只想创建一个简单的 POC,说明如何从 android 应用程序调用基于 SOAP 的 Web 服务。
根据我的阅读,我可以使用这个库KSOAP2
我还没有完成认真的编码,但我只想知道如何使用这个库实现身份验证。
在网上看到的例子中,几乎都没有认证机制。如果我的 Web 服务需要身份验证,例如用户名/密码,那么我如何使用这个库传递它。
只是想要一个线索开始。谢谢
关于您问题的第二部分,我的网络服务位于 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;
}
希望有帮助