Android SOAP WCF服务调用 - 部分响应

时间:2011-01-18 06:46:55

标签: android wcf soap

调用基于.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;
}

1 个答案:

答案 0 :(得分:0)

参数名称输入错误。更改以下行

request.addProperty("CompanyID",CompanyId);

request.addProperty("companyID",CompanyId);

解决了这个问题。