调用基于.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服务在这个元素中返回了大量数据。那是哪里?
UPDATE:在返回一个小的xml字符串时,使用KSOAP的android应用程序获取完整的xml并能够使用上面的代码解析它。
编辑:WCF网络服务方法
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;
}
答案 0 :(得分:0)
参数名称输入错误。更改以下行
request.addProperty("CompanyID",CompanyId);
要
request.addProperty("companyID",CompanyId);
解决了这个问题。