【发布时间】:2011-01-18 06:46:54
【问题描述】:
调用基于 .NET 4.0 Soap 的 WCF 服务。调用过程中没有异常,代码工作正常。
问题是soap resposne只包含起始xml标签和它的结束标签,但没有正文。
也许解析XML或解析有问题我们是否需要基于 REST 的 WCF 服务进行通信。返回的 XML 也非常大(~50-150kb)
这是我正在使用的代码:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapObject param = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("CompanyID",CompanyId);
request.addProperty(METHOD_NAME, param);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION,envelope);
response = (SoapObject) envelope.getResponse(); //Only starting xml tag is returned
在调试器中看到的响应对象包含通常的 SoapObject 属性,并且向下钻取包含 SoapPrimitive "" 内的值对象。但是 Web 服务在此元素内返回大量数据。那是哪里?
更新:在返回一个小的 xml 字符串时,使用 KSOAP 的 android 应用程序正在获取完整的 xml,并能够使用上述代码对其进行解析。
编辑:WCF Web 服务方法
public string GetOffersString(string companyID)
{
DataTable dtGetTopOffers;
dtGetTopOffers = SprocWrapper.PROC_GETTOPOFFERS(companyID);
dtGetTopOffers.TableName = "GETTOPOFFERS";
XElement xGetTopOffers = Common.SerializeDataTable(dtGetTopOffers);
XmlDocument doc = new XmlDocument();
doc.LoadXml(xGetTopOffers.Value);
return doc.InnerXml;
}
【问题讨论】: