【发布时间】:2013-10-29 05:38:14
【问题描述】:
我正在尝试获取详细信息,例如。地区、名称、Id 等...从 MsSql DB 到 .Net Web Service 的数组对象。
我的网络服务
[网络方法]
public DisAndPanDetails[] GetDistrictNameDetails()
{
DisAndPanDetails[] objDetails = new DisAndPanDetails[1];
SQLHelper objHelper = new SQLHelper();
DataTable dtblDetails = new DataTable();
string sQuery = string.Empty;
try
{
sQuery = "SELECT DISTINCT District FROM OnlineTaxMerchantIdDetails ORDER BY District";
objHelper.CreateConnection("Connect");
dtblDetails = objHelper.FillDataTableByQueryString(sQuery);
if (dtblDetails.Rows.Count > 0)
{
DisAndPanDetails[] objDetail = new DisAndPanDetails[dtblDetails.Rows.Count];
for (int iRowIdx = 0; iRowIdx < dtblDetails.Rows.Count; iRowIdx++)
{
objDetail[iRowIdx] = new DisAndPanDetails();
objDetail[iRowIdx].District = dtblDetails.Rows[iRowIdx]["District"].ToString();
}
}
}
catch (Exception ex)
{
objDetails[0] = new DisAndPanDetails();
objDetails[0].Error = ex.Message.ToString();
}
finally
{
objHelper = null;
dtblDetails = null;
}
return objDetails;
}
我的 KvmSerializable 类
public class DisAndPanDetails implements KvmSerializable
{
public String District;
public DisAndPanDetails()
{
}
public DisAndPanDetails(String District)
{
this.District= District;
}
public Object getProperty(int arg0) {
// TODO Auto-generated method stub
switch(arg0)
{
case 0:
return District;
}
// return null;
return null;
}
public int getPropertyCount() {
// TODO Auto-generated method stub
return 1;
}
public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info) {
// TODO Auto-generated method stub
switch(index)
{
case 0:
info.type = PropertyInfo.STRING_CLASS;
info.name = "District";
break;
default:
break;
}
}
public void setProperty(int index, Object value) {
// TODO Auto-generated method stub
switch(index)
{
case 0:
District = value.toString();
break;
default:
break;
}
}
我的活动课
DisAndPanDetails C = new DisAndPanDetails();
PropertyInfo pi = new PropertyInfo();
pi.setName("C");
pi.setValue(C);
pi.setType(C.getClass());
Request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(Request);
envelope.addMapping(NAMESPACE, "DisAndPanDetails",new DisAndPanDetails().getClass());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject response = (SoapObject)envelope.getResponse();
C.District = response.getProperty(0).toString();
System.out.println("Result yash= Dist: "+C.District1+" count:"+intPropertyCount);
}
KvmSerializable ks = (KvmSerializable)envelope.bodyIn;
for(int i=0;i<ks.getPropertyCount();i++)
{
String obj[] = soap.getProperty(0).toString();
String values[] = (String[])Request.getAttribute("District1");
}
System.out.println("rrrr"+response);
TextView tv = (TextView)findViewById(R.id.text123);
tv.setText(C.District);
System.out.println("kkkk"+C.District);
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("error:"+e);
}
}
我需要将所有地区、名称、ID 放入微调器。 我可以将它绑定到微调器,但是如何从 Web 服务获取数组 obj 的这些详细信息作为字符串。请帮忙。
【问题讨论】:
-
为什么没有网络服务在标签中为您提供输出,这意味着您不会在解析代码中编写查询。您只能使用 Bean 类(Get 和 Set 方法)在 Array 中获取这些标签。然后使用适配器(首选 BaseAdapter)在 Spinner 中填充该数组。
-
这是一个现有的网络服务。我没有权限修改 Web 服务。我只能得到服务。我需要看看如何使用它。并且数据存储在 Mssql DB 中。
-
您的服务是否可调用?它是否提供 XML 输出?因为 Service 可以从它的 .NET 代码中调用相关的查询并给你结果标签。这是一种快速的方法。为了获得更好的性能,您不应对 Web 服务输出进行排序或处理。确保你只得到你需要的东西。如果有不同的查询,请提供不同的服务。我有这种方法的经验,相信我,它会更好。
-
检查这个:androidexample.com/Dot_Net_Webservice_Call_-_Android_Example/…。可调用我的意思是在链接中。它有文本框来获取值并为您提供输出。顺便说一句,你可以知道你会得到什么并准备你的代码来接收。
标签: android arrays web-services object android-ksoap2