我正在理解android编程,我只是想创建一个关于如何从Android应用程序调用基于SOAP的Web服务的简单POC。
根据我的阅读材料,我可以使用此库KSOAP2
我还没有完成严格的编码,但我想知道如何使用这个库实现身份验证。
在我在网上看到的示例中,几乎所有示例都没有身份验证机制。如果我的Web服务需要身份验证(例如用户标识/密码),那么如何使用此库传递它。
只想开始领先。感谢
答案 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;
}
希望有所帮助